不支持文件导入回调?
Posted
技术标签:
【中文标题】不支持文件导入回调?【英文标题】:File import callback not supported? 【发布时间】:2021-07-23 01:01:14 【问题描述】:试图运行:
1.) Dappuniversity 项目 (dappuniversity/dbank) 2.) 宠物店教程
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”:不支持文件导入回调
【问题讨论】:
运气好吗?同一条船在这里 尝试删除构建工件(.json 文件)并再次运行命令。 【参考方案1】:错误:Source "@openzeppelin/contracts/token/ERC20/ERC20.sol" not found: File import callback not supported
第 1 步:
安装 Solidity 扩展
第二步:
右键单击错误。 选择“更改默认工作区...”第三步:
选择localNodeModule
可能需要重新启动 IDE
【讨论】:
也不适合我【参考方案2】:ERC20 文件需要其他文件
pragma solidity ^0.8.0;
import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.sol";
不清楚你是否正确安装了 OpenZeppelin。
【讨论】:
【参考方案3】:安装任何缺少的依赖项并将它们添加到您的package.json
。
请注意,某些包,例如 @chainlink/contracts
需要使用 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
当我从路径中删除版本时,错误消失了,但我不知道这是多么合法。 尽管¯\(ツ)/¯
它仍然可以编译【讨论】:
【参考方案4】:对我(运行 Win 10)来说,当我清除 VSCode solidity 扩展中的设置时,此错误已解决。
扩展菜单 --> 右键单击 Juan Blanco 的 Solidity --> 扩展设置 --> 滚动到“Solidity:Package Default Dependencies Contracts Directory” --> 删除默认值
默认值是指向错误的路径。
https://github.com/juanfranblanco/vscode-solidity/issues/178
【讨论】:
以上是关于不支持文件导入回调?的主要内容,如果未能解决你的问题,请参考以下文章
Python / ImportError:不支持按文件名导入[重复]
导入阶段的 UNO IllegalArgument:无法读取源文件。 URL 似乎不受支持
Netezza 从外部文件导入错误:不支持的外部表引用,无法导出形状