Windows 7执行任意npm命令均报EBADPLATFORM错误求解决
解决Windows 7下npm安装/更新时EBADPLATFORM(fsevents不兼容)的问题
你遇到的是旧版npm对跨平台可选依赖处理不完善的问题——fsevents是专门为MacOS(darwin平台)设计的文件系统监听包,正常来说它应该是可选依赖,但npm 5.x版本在处理这类依赖时不会自动跳过不兼容平台的包,所以才会触发这个报错。
下面是几个有效的解决方案和调试排查步骤:
快速解决方法
- 跳过可选依赖安装:执行安装或更新命令时加上
--no-optional参数,强制npm忽略所有可选依赖,自然就不会尝试安装仅支持Mac的fsevents了:npm install --no-optional # 更新npm时用这条 npm update -g npm --no-optional - 升级同Node版本兼容的npm:Node 8.9.4可以兼容npm 5.x的最新版本(比如5.10.0),新版本npm对可选依赖的兼容性处理更完善,会自动跳过不匹配平台的包:
npm install -g npm@5.10.0 - 手动标记fsevents为可选依赖:如果是项目本地的问题,在项目的
package.json中添加或更新optionalDependencies字段,明确告诉npm这个包是可选的:
或者直接执行命令自动添加:"optionalDependencies": { "fsevents": "*" }npm install fsevents --save-optional - 删除锁定文件重新安装:如果项目里有
package-lock.json或npm-shrinkwrap.json,先删除它们再执行npm install——锁定文件可能已经固定了fsevents的版本,导致npm一直尝试安装不兼容的包。
调试排查步骤
- 定位引入fsevents的依赖源:用下面的命令查看依赖树,找到哪个包把fsevents列为了依赖:
如果发现某个包错误地将fsevents设为必填依赖(而非可选),可以尝试升级该包的版本,或者寻找替代包。npm ls fsevents - 检查npm可选依赖配置:确认npm是否开启了可选依赖支持,执行:
如果返回npm config get optionalfalse,执行下面的命令开启:npm config set optional true
内容的提问来源于stack exchange,提问作者John James
相关产品推荐
相关产品推荐

