【问题标题】:Can't import openzeppelin node_modules: File import callback not supported无法导入 openzeppelin node_modules:不支持文件导入回调
【发布时间】:2021-05-04 06:16:56
【问题描述】:

每当我尝试编译我的solidity合约时,都会抛出错误ParserError: Source \"@OpenZeppelin/contracts/math/SafeMath.sol\" not found: File import callback not supported

pragma solidity ^0.7.0;

import "@OpenZeppelin/contracts/token/ERC20/ERC20.sol";
import "@OpenZeppelin/contracts/math/SafeMath.sol";

有什么可能导致这种情况的想法吗?

【问题讨论】:

  • 你是用VSCode插件编译的吗?
  • 查看我的稳固性node_module 在这里引用stackoverflow.com/a/68459731/8534426
  • 这能回答你的问题吗? File import callback not supported?
  • 如果您阅读 VS Code 扩展文档(我使用的是 Juan Blanco 的扩展),它有一个关于 openzepplin 的部分。您需要编辑您的设置并添加以下内容(假设 node_modules 在您的 ptoject 的根目录中):“solidity.packageDefaultDependenciesContractsDirectory”:“”,“solidity.packageDefaultDependenciesDirectory”:“node_modules”

标签: node.js solidity openzeppelin


【解决方案1】:

安装 OpenZeppelin 后关闭 IDE 并重新打开。

【讨论】:

  • 你说得对,哈哈哈。我想,VSCode 的 Solidity 插件是罪魁祸首。我编辑:恼人的错误并没有消失。
  • @Jose4Linux 确保导入路径正确
【解决方案2】:

我现在也有同样的问题。我正在使用 truffle+node 并修复了它,将导入路径修改为相对路径,例如,

pragma solidity ^0.7.0;

import "../node_modules/OpenZeppelin/contracts/token/ERC20/ERC20.sol";
import "../node_modules/OpenZeppelin/contracts/math/SafeMath.sol";

我不是 100% 确定为什么会发生这种情况,但我希望我能帮到你。

【讨论】:

    【解决方案3】:

    确保您在项目的根目录中打开了 VS Code。

    在我的例子中,当我遇到同样的错误时,我的 VS Code 目录是这样的。

    projects
     |___MyContract
       |__contracts
         |__Contract.sol
    

    MyContract 目录中重新打开 VS Code 可以修复它。

    MyContract
     |__contracts
       |__Contract.sol
    

    【讨论】:

      【解决方案4】:

      对于某些环境,SafeMath 有不同的路径

      import "@openzeppelin/contracts/utils/math/SafeMath.sol";
      

      【讨论】:

        【解决方案5】:

        实际上问题是solidity编译器很愚蠢并且不会自动遵循路径,您必须手动指定所有允许的路径(https://docs.soliditylang.org/en/latest/using-the-compiler.html),每一个都完全指向文件(不能只给出更高级别文件夹)如果可以的话,使用 npx hardat 编译会更好

        【讨论】:

          猜你喜欢
          • 2021-07-23
          • 2022-11-11
          • 1970-01-01
          • 2012-12-19
          • 2019-01-29
          • 2018-02-10
          • 2021-10-06
          • 2017-04-29
          • 2019-10-21
          相关资源
          最近更新 更多