Truffle编译合约导入OpenZeppelin依赖卡住报错如何解决?
问题排查与解决方案
错误根因
- import路径使用了Windows系统专属的反斜杠
\,Solidity编译器跨平台统一要求使用正斜杠/作为路径分隔符,反斜杠会被识别为转义字符,导致路径解析失败触发ParserError - import语句的路径外层嵌套了两层双引号,不符合Solidity import语法规则,编译器无法识别出合法的导入路径
修复方案
- 编辑
virus.sol文件,替换错误的import行:
原错误代码:
import ""@openzeppelin\contracts\token\ERC721\ERC721.sol"";
修正后代码:
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
- (可选)版本兼容优化:当前OpenZeppelin v4.x版本默认适配Solidity 0.8+,可将pragma语句调整为固定兼容范围,避免版本兼容问题:
原pragma代码:
pragma solidity >=0.4.22 <0.9.0;
优化后:
pragma solidity ^0.8.0;
- 保存修改后的合约文件,重新执行
truffle compile即可完成编译
内容的提问来源于stack exchange,提问作者John Kent
相关产品推荐
相关产品推荐

