Node.js中加载指定版本Solidity编译器遇报错求助
解决Node.js中Solidity指定版本编译器加载问题
问题2:solc.useVersion()不存在的处理
solc-js从v0.5.x版本起已移除useVersion方法,该API属于旧版规范。若你是参考旧文档编写代码,需适配当前solc的新逻辑。
问题1:solc.loadRemoteVersion报错Error retrieving binaries: not found的解决
该错误常见原因及对应方案如下:
- 版本号格式错误:必须传入完整的语义化版本号(如
'0.8.20'),不能使用'0.8'这类不完整版本,也不要尝试加载非官方稳定的夜间版(除非确认该版本存在于GitHub仓库)。 - solc包版本兼容问题:若安装的是最新版solc,
loadRemoteVersion的实现可能有变更,可尝试降级solc到v0.8.x早期版本测试,或确保安装的solc包版本与目标加载版本兼容。 - 网络/本地文件替代:若网络无法访问GitHub资源,可手动下载对应版本的solcjs二进制文件,放到
node_modules/solc/bin/目录下,命名为solc-v[版本号].js(如solc-v0.8.20.js),之后直接通过require('solc/bin/solc-v0.8.20.js')加载该版本。
推荐的稳定方案
远程加载易受网络或版本兼容影响,最可靠的方式是直接安装指定版本的solc:
npm install solc@0.8.20
代码中直接引用即可:
const solc = require('solc') // 此时solc即为你安装的指定版本
若需在项目中切换多版本,可安装多个版本后通过路径引用:
npm install solc@0.7.6 solc@0.8.20
引用示例:
const solcV07 = require('solc@0.7.6') const solcV08 = require('solc@0.8.20')
内容的提问来源于stack exchange,提问作者JoshuaDev
相关产品推荐
相关产品推荐

