Mac Big Sur M1执行npm install报ERESOLVE及node-gyp构建错误怎么解决?
问题解决步骤
1. 处理依赖版本冲突(ERESOLVE报错根源)
报错的核心原因是项目根目录依赖的@angular/forms@11.2.14,和ngx-typesafe-forms@1.5.1要求的对等依赖@angular/forms@^12.0.0版本不匹配,可选择两个方案解决:
- 方案一:升级项目的
@angular/forms到12.x版本,匹配ngx-typesafe-forms的依赖要求,执行命令:
npm install @angular/forms@12.x --save
- 方案二:锁定ngx-typesafe-forms的版本到适配Angular 11的旧版本,
ngx-typesafe-forms@1.4.3是支持Angular 11的最后版本,直接修改package.json中该包的版本为固定值1.4.3,去掉版本号前的^前缀避免自动升到1.5.x版本。
2. 处理M1芯片下node-sass编译报错
第二个报错是旧版本node-sass不兼容Node16+和M1架构导致的原生编译失败,按优先级选择以下方案:
- 优先方案:把项目中的node-sass替换成官方推荐的
sass(即dart-sass,纯JS实现无原生编译依赖,完全兼容node-sass语法),执行命令:
npm uninstall node-sass npm install sass --save-dev
- 若项目必须使用node-sass,需先匹配版本对应关系:node-sass@6.0+才支持Node16,低于该版本的node-sass无法在Node16环境下编译;M1芯片运行更低版本node-sass需要通过Rosetta 2打开终端再执行安装命令,或者切换到Node14版本安装对应适配的node-sass版本。
- 临时规避参数:确认依赖版本兼容后,执行安装时可附加参数:
npm install --legacy-peer-deps --unsafe-perm
3. 清理缓存重试
如果操作后仍有异常,先清理npm缓存再重新安装:
npm cache clean --force rm -rf node_modules package-lock.json npm install
内容的提问来源于stack exchange,提问作者solar apricot
相关产品推荐
相关产品推荐

