Windows下@vercel/ncc构建报Module not found错误如何解决
@vercel/ncc 编译抛出 MODULE_NOT_FOUND 错误排查方案
以下按优先级排序排查步骤,覆盖Windows环境下90%以上的同类报错场景:
- 修正npm脚本路径配置错误
现有build脚本存在两个Windows路径解析+ESM规范兼容问题:- 输出路径写
/dist会被Windows解析为当前盘符根目录(如C:\dist),而非项目内的dist文件夹 - ESM规范下不允许省略本地文件的相对路径前缀
./,直接写index.js会被ncc识别为第三方依赖去node_modules里查找,必然触发找不到模块的错误
将package.json里的build脚本替换为以下内容:
"scripts": { "build": "ncc build ./index.js -o dist" } - 输出路径写
- 清理缓存重装依赖
路径配置修正后先执行干净重装,避免旧的依赖缓存影响:- 删除项目根目录下的
node_modules文件夹、package-lock.json文件 - 在项目根目录执行
npm install重新安装所有依赖 - 跳过npm脚本,直接执行
npx ncc build ./index.js -o dist验证编译是否正常,若这一步执行成功,说明问题已解决。
- 删除项目根目录下的
- 修复ESM模式兼容问题
若上述步骤仍报错,是因为当前稳定版@vercel/ncc对package.json中设置"type": "module"的原生ESM项目存在解析bug,二选一修复即可:- 兼容方案:将入口文件
index.js重命名为index.mjs,同步把build脚本的入口路径改为./index.mjs,不需要修改type配置 - 稳定方案:删除package.json中的
"type": "module"字段,将index.js中的ESMimport语法改为CommonJS的require语法,这也是GitHub官方JavaScript Action示例默认采用的写法,和ncc的兼容性最好。
- 兼容方案:将入口文件
- 排查Windows系统路径异常
若以上操作都无效,检查项目存放路径:- 不要把项目放在需要管理员权限的系统目录(如C:\Program Files、C:\Windows路径下)
- 项目所在路径不要包含中文、全角空格、特殊符号,这类字符会导致Windows终端的路径解析出错,把项目移动到纯英文路径(如
C:\dev\your-custom-action)后重试即可。
编译校验:执行成功后项目根目录会生成dist文件夹,内部的index.js就是打包后的单文件产物,后续action.yml配置中指定入口为
dist/index.js即可正常运行,不需要提交node_modules目录。
内容的提问来源于stack exchange,提问作者mackie1908
相关产品推荐
相关产品推荐

