GitHub Actions执行npm ci报watchpack-chokidar2:fsevents绑定不可访问错误如何解决
错误原因
fsevents是仅适配 macOS 系统的可选依赖,用于提供高性能的文件系统监听能力,而你的 GitHub Actions 运行环境为 Ubuntu,本身不支持该依赖。- 你本地的开发环境大概率是 macOS,生成的
package-lock.json文件中将fsevents作为watchpack-chokidar2的依赖进行了锁定。npm ci命令会严格按照锁文件安装依赖,Node.js 14.x 配套的默认 npm 版本对跨平台可选依赖的兼容处理存在缺陷,不会自动跳过当前系统不支持的可选依赖,因此触发报错。
解决办法
推荐优先使用第一种方案,改动最小且完全适配你的使用场景:
方案一:给 npm ci 增加跳过可选依赖的参数
你只需要修改 .github/workflows/eslint.yaml 中执行 npm ci 的行,加上 --no-optional 参数即可,你的 CI 仅需要执行 ESLint 检查,不需要用到文件监听相关的可选依赖,跳过安装完全不影响流程运行。
修改后的配置示例:
name: ESLint on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Use Node.js uses: actions/setup-node@v1 with: node-version: '14.x' - run: npm ci --no-optional - run: npm run lint
方案二:升级 npm 到 7.x 及以上版本
新版 npm 优化了跨平台可选依赖的处理逻辑,会自动跳过当前系统不兼容的可选依赖。可以在安装依赖前增加升级 npm 的步骤:
- run: npm install -g npm@8 - run: npm ci
内容的提问来源于stack exchange,提问作者Rodrigo
相关产品推荐
相关产品推荐

