Mac Monterey下VS Code运行Solidity报MODULE_NOT_FOUND错误如何解决
问题背景
- 操作系统:Mac Monterey
- 运行环境:VS Code
- 触发操作:尝试运行Solidity代码时抛出错误,无法定位故障点
- 报错日志:
node version node:internal/modules/cjs/loader:942 throw err; ^ Error: Cannot find module '/Users/h/U_Block Developer/star/version' at Module._resolveFilename (node:internal/modules/cjs/loader:939:15) at Module._load (node:internal/modules/cjs/loader:780:27) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) at node:internal/main/run_main_module:17:47 { code: 'MODULE_NOT_FOUND', requireStack: [] }
故障原因
报错本质是Node.js找不到指定要执行的模块文件,直接诱因是命令输入错误:输入node version试图查询Node版本时,Node会把version识别为待执行的脚本文件路径,在当前工作目录/Users/h/U_Block Developer/star/下查找名为version的文件,找不到就抛出这个MODULE_NOT_FOUND错误。
另外项目存放在带空格的路径U_Block Developer下,后续执行Solidity编译、部署脚本时如果不对路径做转义或加引号,也容易触发同类路径解析错误。
解决步骤
- 先验证Node环境是否正常:在VS Code终端输入正确的版本查询命令
node -v(或node --version),如果正常返回版本号,说明Node安装无异常。 - 明确Solidity的运行逻辑:Node本身无法直接执行.sol后缀的Solidity代码,如果用Hardhat、Truffle等开发框架,需要先在项目根目录执行
npm install安装全部依赖,再使用框架对应的编译、运行命令;如果依赖VS Code的Solidity插件运行代码,检查插件配置中solc编译器路径、Node路径是否指向实际存在的文件,不要配置无效路径。 - 规避路径空格问题:建议将带空格的文件夹名
U_Block Developer重命名为无空格的U_Block_Developer,从根源避免路径解析故障。
内容的提问来源于stack exchange,提问作者Hitesh
相关产品推荐
相关产品推荐

