GitHub Actions执行npm install时fsevents@2.3.2不支持Linux报错求解
问题根因
报错由两个关联问题共同导致:
- GitHub Action 运行环境的 npm 版本过低,无法正确识别
lockfileVersion@2格式的package-lock.json,导致你指定的--no-optional参数未生效,强制安装了所有声明的依赖 - fsevents 是项目依赖链中文件监听类工具(如 nodemon、chokidar)的 macOS 专属可选依赖,低版本 npm 无法自动跳过不兼容平台的可选依赖
可行解决方案
按优先级从高到低选择即可:
方案1:对齐 GitHub Action 运行环境与本地的 Node.js 版本
修改你仓库.github/workflows/目录下的流水线配置文件,将 Node.js 版本指定为 16.x 及以上(该版本默认搭载的 npm 原生支持lockfileVersion@2),配置示例:- uses: actions/setup-node@v3 with: node-version: '16.x' # 可替换为你本地开发使用的Node.js版本,16及以上均可修改后重新触发流水线,原有
npm i --no-optional命令即可正常跳过不兼容的 fsevents 依赖。方案2:强制配置 npm 跳过可选依赖
若不方便升级 Node.js 版本,可修改安装命令,提前全局关闭可选依赖安装:npm config set optional false && npm i --no-optional && cd client && npm i --no-optional && cd ..也可在项目根目录和 client 目录下新增
.npmrc文件,写入如下配置后提交到仓库:optional=false方案3:重新生成兼容版本的锁文件
删除本地项目根目录、client 目录下的package-lock.json文件和node_modules文件夹,本地执行npm i --no-optional重新生成锁文件,确认安装无报错后将新的锁文件提交到仓库,再触发流水线即可。
你之前的方案失效是因为低版本 npm 读取高版本锁文件时,不会遵守可选依赖跳过规则,也不会识别你新增的可选依赖配置,优先完成版本对齐即可解决问题。
内容的提问来源于stack exchange,提问作者HushAtom
相关产品推荐
相关产品推荐

