Angular 12本地构建正常,Github部署Azure时Oryx构建npm依赖冲突
解决Angular 12项目Github构建时的ERESOLVE依赖冲突问题
核心原因
@ng-bootstrap/ng-bootstrap@10.0.0要求的@angular/localize@^12.0.0本身完全兼容@angular/compiler@12.1.5(^12.0.0允许12.x.x全版本),冲突本质是本地与Github Runner的npm版本差异——npm 7+对peer依赖的检查逻辑比v6严格,且不同npm版本的依赖解析结果可能不一致。
具体解决步骤
锁定Node与npm版本:在Github Actions配置文件中明确指定与本地一致的Node(16.14.1)和npm版本(本地执行
npm -v查看具体版本,比如8.5.0),避免Runner使用默认版本:steps: - uses: actions/checkout@v4 - name: Setup Node.js and npm uses: actions/setup-node@v4 with: node-version: '16.14.1' cache: 'npm' - run: npm install -g npm@8.5.0 # 替换为你本地的npm版本号显式安装匹配的@angular/localize:在本地执行命令,将
@angular/localize版本与其他Angular包统一为12.1.5,消除版本模糊性:npm install @angular/localize@12.1.5 --save-exact提交更新后的
package.json和package-lock.json到仓库。调整npm安装参数:如果严格解析仍报错,在Github Actions的
npm install命令中添加--legacy-peer-deps参数,回退到npm v6的peer依赖解析逻辑:npm install --unsafe-perm --legacy-peer-deps清理缓存:在本地执行以下命令后重新提交lock文件,确保依赖解析一致:
rm -rf node_modules package-lock.json npm install
内容的提问来源于stack exchange,提问作者Danielle
相关产品推荐
相关产品推荐

