Linux环境下执行npm ci因fsevents不兼容报错问题求助
错误原因
fsevents是MacOS平台专属的文件系统监听工具,属于项目依赖的可选子依赖,你在Mac环境执行npm install时会将其写入package-lock.json,Linux环境下npm ci会严格匹配lock文件的依赖列表,检测到平台不匹配就会触发不支持的报错。
可用解决方案
- 方案1:Linux服务器执行安装时跳过可选依赖,直接运行命令:
如果你使用的是npm v6及更早版本,替换为:npm ci --omit=optional
该方案不需要修改本地代码,直接在服务器执行即可生效。npm ci --no-optional - 方案2:修改本地配置适配跨平台场景,操作步骤如下:
- 在你的package.json中新增optionalDependencies配置段,指定fsevents为Mac专属可选依赖:
{ // 原有配置保持不变 "optionalDependencies": { "fsevents": "^2.2.1" } } - 本地删除旧的node_modules目录和package-lock.json文件,执行
npm install重新生成lock文件 - 将更新后的package.json和package-lock.json推送到远程仓库
- Linux服务器拉取最新代码后执行
npm ci即可正常安装
- 在你的package.json中新增optionalDependencies配置段,指定fsevents为Mac专属可选依赖:
- 方案3:全局禁用可选依赖安装,在项目根目录新建.npmrc文件,添加如下内容:
后续所有平台执行npm安装操作时都会自动跳过可选依赖,无需每次执行命令加参数。optional=false
内容的提问来源于stack exchange,提问作者BenjaminK
相关产品推荐
相关产品推荐

