VScode Solidity 扩展 - 找不到 openzepplin 导入

par*_*ent 5 visual-studio-code solidity openzeppelin hardhat

我正在尝试开始使用应该是非常简单的 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 停止抱怨,但随后我无法通过 hardhard 进行编译,错误是:

未找到源“node_modules/@openzeppelin/contracts/security/Pausable.sol”:允许目录之外的文件。

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

"solidity.packageDefaultDependenciesContractsDirectory": "contracts",
"solidity.packageDefaultDependenciesDirectory": "node_modules"
Run Code Online (Sandbox Code Playgroud)

这对应于我的项目结构

root 
 |_ contracts
    |_ MyToken.sol
 |_ node_modules
    |_ @openzepplin
Run Code Online (Sandbox Code Playgroud)

我按照此处的说明进行了广泛的研究,但不幸的是无法使其正常工作。

Ind*_*raj 1

Source "@openzeppelin/contracts/token/ERC20/ERC20.sol" not found: File import callback not supported
Run Code Online (Sandbox Code Playgroud)

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