自定义GitHub Action运行报MODULE_NOT_FOUND错误该如何解决?
自定义GitHub Action MODULE_NOT_FOUND错误解决方案
Error: Cannot find module '/home/runner/work/GitHubPullAction/GitHubPullAction/node_modules/is-plain-object/dist/is-plain-object.js'. Please verify that the package.json has a valid "main" entry
{
code: 'MODULE_NOT_FOUND',
path: '/home/runner/work/GitHubPullAction/GitHubPullAction/node_modules/is-plain-object/package.json',
requestPath: 'is-plain-object'
}
- 显式锁定
is-plain-object版本
该报错是@octokit/endpoint依赖的is-plain-object部分版本的main字段配置异常导致,直接在项目的package.json中声明指定版本即可,执行命令:npm install is-plain-object@3.0.1 --save
该版本的入口路径配置稳定,不存在路径指向错误问题。 - 完善Action的依赖安装逻辑
如果你的Action仓库没有提交node_modules目录,需要在action.yml的运行步骤中,执行主逻辑前添加依赖安装命令,示例配置片段:
runs: using: "composite" steps: - run: npm ci shell: bash - run: node index.js shell: bash
优先使用npm ci而非npm install,可以完全匹配package-lock.json中的依赖版本,避免版本浮动导致的兼容问题。
- 用打包工具合并所有依赖
推荐使用ncc工具将Action代码和所有依赖打包为单文件,彻底规避依赖缺失问题,执行打包命令:npx @vercel/ncc build index.js --license licenses.txt
打包后会生成dist目录,将该目录提交到仓库后,修改action.yml中的入口指向dist/index.js即可,不需要在运行时额外安装依赖。 - 清理缓存重试
如果GitHub Action配置了npm缓存,可临时禁用缓存后重新运行,避免缓存的损坏依赖包导致该问题,也可以在安装依赖前添加删除缓存文件的步骤:rm -rf node_modules package-lock.json && npm install
内容的提问来源于stack exchange,提问作者PatrickNolan
相关产品推荐
相关产品推荐

