3

试图运行:

1.) Dappuniversity 项目 (dappuniversity/dbank) 2.) pet-shop-tutorial

Truffle v5.3.3(核心:5.3.3)节点 v14.15.5

当 Truffle 要求它的编译器/solc 匹配 5.3.3 时,ser 如何在 0.8.4 编译代码以导入 OpenZeppelin 的 ERC20.sol 模板?

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract Token is ERC20 {

  //add minter variable

  //add minter changed event

  constructor() public payable ERC20("Name", "Symbol") {

    //asign initial minter

  }

  //Add pass minter role function

  function mint(address account, uint256 amount) public {

    //check if msg.sender have minter role

    _mint(account, amount);

  }

}

未找到源“@openzeppelin/contracts/token/ERC20/ERC20.sol”:不支持文件导入回调

4

7 回答 7

33

错误:
Source "@openzeppelin/contracts/token/ERC20/ERC20.sol" not found: File import callback not supported 在此处输入图像描述

步骤1:

安装 Solidity 扩展 在此处输入图像描述

第2步:

  • 右键单击错误。
  • 选择“更改默认工作区...” 在此处输入图像描述

第 3 步:

选择localNodeModule
可能必须重新启动 IDE 在此处输入图像描述

于 2021-07-20T18:26:32.797 回答
1

我在包/包下的纱线包中运行安全帽。要消除此错误,请转到 Solidity 插件的首选项。

首选项:包默认依赖目录

值:packages/hardhat/node_modules

在此处输入图像描述

于 2022-02-04T21:31:06.433 回答
1

对我来说(运行 Win 10),当我清除 VSCode solidity 扩展中的一个设置时,这个错误就解决了。

扩展菜单
--> 右键单击​​ Juan Blanco 的 Solidity
--> 扩展设置
--> 滚动到“Solidity:Package Default Dependencies Contracts Directory”
--> 删除默认值

默认值是指向错误的路径。

https://github.com/juanfranblanco/vscode-solidity/issues/178

于 2022-01-06T22:26:25.617 回答
0

如果node_modules包含您要导入的脚本的目录不在 VSCode 工作区的根目录下,您可以手动将solidity 扩展指向它,.vscode/settings.json如下所示:

{
  "solidity.packageDefaultDependenciesDirectory": "path/to/sub/dir/node_modules"
}
于 2022-02-14T10:33:49.103 回答
0

ERC20 文件需要其他文件

pragma solidity ^0.8.0;

import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.sol";

目前尚不清楚您是否正确安装了 OpenZeppelin。

于 2021-05-22T21:07:59.513 回答
0

安装任何缺少的依赖项并将它们添加到您的package.json.
请注意,某些包,例如@chainlink/contracts需要 using yarn,因为它们使用yarn 工作空间

npm ERR! Error: Please use yarn to install dependencies

例如:

yarn add @chainlink/contracts

但是,我没有使它适用于包含 @version 标记的包,因为导入路径与node_modules.

npm i @openzeppelin/contracts@4.4.0

在此处输入图像描述 当我从路径中删除版本时,错误消失了,但我不知道这是多么合法。 在此处输入图像描述 它仍然编译虽然¯\ (ツ)

于 2021-12-22T05:25:09.873 回答
0

如果您使用的是 VSCODE solidity 扩展:请确保您从 package.json 所在的 /contracts/ 和 /node_modules/ 下的目录运行 VSCODE。

路径将被更新,错误将消失。

于 2022-01-24T20:59:41.797 回答