Gatsby Cloud部署依赖安装失败:webpack-dev-server无法访问fsevents的bindings
问题根因
- 你提到的
bindings是npm生态中用于加载系统原生模块的工具库,本次报错本质是fsevents作为macOS专属的文件系统监听原生依赖,在Gatsby Cloud的Linux构建环境下没有对应的系统绑定文件可以加载 - 你本地Ubuntu环境生成的
package-lock.json中残留了fsevents的关联条目,云端执行npm ci时会严格按照lockfile解析依赖,触发了webpack-dev-server到fsevents的链路访问错误 - 报错附带的EPERM标识也可能和云端npm版本与你本地版本不匹配,导致依赖解析逻辑不一致有关
修复步骤
清理本地依赖缓存与lockfile
本地项目根目录执行以下命令:rm -rf node_modules package-lock.json npm cache clean --force配置npm跳过可选依赖安装
在项目根目录新建.npmrc文件(已有则直接追加),添加以下配置强制所有系统环境下跳过可选依赖的安装,直接过滤掉fsevents:
你也可以选择在optional = falsepackage.json中添加可选依赖声明,明确标记fsevents的可选属性:"optionalDependencies": { "fsevents": "*" }重新生成依赖锁文件
本地执行npm install重新生成package-lock.json,此时生成的锁文件不会包含Linux环境下不需要的fsevents强制安装条目提交改动重新构建
将修改后的package.json/.npmrc和新生成的package-lock.json提交到Git仓库,重新触发Gatsby Cloud构建即可
日志获取说明
Gatsby Cloud的构建容器是临时实例,构建结束后会直接销毁,npm生成的容器内本地日志文件无法导出,你不需要额外获取该日志,上述修复步骤已经覆盖了该类报错的所有常见场景。如果按步骤操作后仍报错,可以在Gatsby Cloud的站点设置中将构建环境的Node版本指定为和你本地一致的14.16.0,消除版本差异影响。
内容的提问来源于stack exchange,提问作者Javan Pohl
相关产品推荐
相关产品推荐

