【问题标题】:Truffle compiler can't find open zeppelin contractsTruffle 编译器找不到开放的 zeppelin 合约
【发布时间】:2020-06-16 10:16:18
【问题描述】:

我在尝试编译时收到一条错误消息。我检查了 node_modules 里面,所有的合同都在那里。我用 sudo 运行松露。不仅仅是这个导入,所有开放的 zeppelin 合约都在这样做。

Error: Could not find /home/a/Documents/so/contracts/openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol from any sources; imported from /home/a/Documents/so/contracts/crowdsale.sol
    at Resolver.<anonymous> (/usr/local/lib/node_modules/truffle/build/webpack:/packages/resolver/dist/lib/resolver.js:53:1)
    at Generator.next (<anonymous>)
    at fulfilled (/usr/local/lib/node_modules/truffle/build/webpack:/packages/resolver/dist/lib/resolver.js:5:42)
    at <anonymous>
Truffle v5.1.28 (core: 5.1.28)
Node v8.10.0

我是这样导入的

pragma solidity ^0.4.23;

import "openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol";

【问题讨论】:

    标签: solidity


    【解决方案1】:

    需要使用@语法导入:

    import "@openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol";

    在此处查看示例:

    https://github.com/Dawn-Protocol/dawn-erc20-erc777/blob/master/contracts/DawnTokenImpl.sol#L5

    【讨论】:

    • 这不起作用,他们安装到缺少合同的 node_modues 中
    • 存储库是一个工作示例,因此您可以通过将您的工作与此进行比较来尝试缩小它对您不起作用的原因。例如,也许 Solidity 编译器版本不同,而您使用的编译器太旧?
    • 还要研究 Solidity 如何处理相对导入路径以及@ 符号的含义。您的问题缺少对您的项目文件夹结构的任何描述或合同应该在您认为的位置的证据,所以我认为这只是代表您的误解,您认为它应该有效。
    • 在 windows 上有一个未解决的问题!
    猜你喜欢
    • 1970-01-01
    • 2019-07-13
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-25
    • 2019-05-27
    相关资源
    最近更新 更多