VScode Solidity 扩展 - 找不到 openzepplin 导入

Posted

技术标签:

【中文标题】VScode Solidity 扩展 - 找不到 openzepplin 导入【英文标题】:VScode Solidity extension - not finding openzepplin imports 【发布时间】:2021-07-22 15:42:42 【问题描述】:

我正在尝试开始使用一个非常简单的 Solidity 合约,但 VSCode 让我很难过。 我正在使用 Juan Blancos solidity 插件,但 VSCode 找不到 openzepplin 导入

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

错误是:

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

即使 vscode 显示红色波浪线,我也可以通过 hardhat compile 成功编译。

如果我将路径更改为

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

VScode 停止抱怨,但我无法通过硬硬编译,错误是:

找不到源“node_modules/@openzeppelin/contracts/security/Pausable.sol”:文件超出允许的目录。

我的用户和工作区的 Solidity 扩展的 VSCode 设置是:

"solidity.packageDefaultDependenciesContractsDirectory": "contracts",
"solidity.packageDefaultDependenciesDirectory": "node_modules"

这与我的项目结构相对应

root 
 |_ contracts
    |_ MyToken.sol
 |_ node_modules
    |_ @openzepplin

我按照说明 here 进行了广泛的研究,但遗憾的是无法使其正常工作。

【问题讨论】:

我正在尝试使用 GitHub 将其导入 VScode。 import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.1.0/contracts/access/Ownable.sol"; 但它给了我一个错误This contract not found and File import callback not supported。为Solidity 使用Juan Blanco 扩展。 【参考方案1】:
Source "@openzeppelin/contracts/token/ERC20/ERC20.sol" not found: File import callback not supported

我有同样的问题。我在unnamed 工作区中添加了多个文件夹。删除所有其他文件夹并仅保留一个项目文件夹后,为我解决了问题。

【讨论】:

以上是关于VScode Solidity 扩展 - 找不到 openzepplin 导入的主要内容,如果未能解决你的问题,请参考以下文章

vscode 激活扩展失败:找不到具有非相对导入的模块

vscode切换Solidity的编译版本

visualstudiocode的viewinb找不到

VS Code 命令托盘中的 Flutter 找不到 git

vscode提示找不到module

Visual Studio Code:找不到预提交的已安装版本