Brownie导入0x合约报错:无法从Etherscan拉取合约、solc找不到依赖
Brownie下0x合约依赖导入报错解决方案
错误核心原因
solc编译器的允许访问目录未包含0x依赖包的存储路径,同时Brownie没有配置对应包名的导入重映射,无法识别@0x开头的导入路径。
解决步骤
- 第一步:确认项目根目录已安装所有需要的0x依赖包,执行以下命令安装缺失包:
npm install @0x/contracts-utils @0x/contracts-zero-ex
如果用yarn则执行:yarn add @0x/contracts-utils @0x/contracts-zero-ex - 第二步:修改项目根目录下的
brownie-config.yaml配置文件,添加solc的重映射规则和允许路径:
compiler: solc: # 配置导入重映射,将@0x开头的导入指向node_modules下的对应包 remappings: - "@0x=node_modules/@0x" # 把node_modules加入solc的允许访问目录,解决跨目录访问报错 allow_paths: - "." - "./node_modules"
如果你的node_modules目录不在项目根目录,把上面的./node_modules替换为node_modules的绝对路径即可。
- 第三步:清理历史编译缓存,重新全量编译合约:
brownie compile --all - 如果你是从区块链浏览器导入的合约,需要确认导入语句的路径和你配置的重映射规则匹配,无需手动修改合约内的导入路径。
内容的提问来源于stack exchange,提问作者Joshua Guessennd
相关产品推荐
相关产品推荐

