升级Angular 5后VSTS构建失败:缺失uglifyjs-webpack-plugin依赖求解决
解决Angular 5在VSTS构建中缺失
uglifyjs-webpack-plugin的问题 这种本地构建正常但VSTS(现Azure DevOps)构建失败的情况我之前踩过不少坑,大多和依赖安装不完整或者环境不一致有关。给你几个实测可行的解决方案:
1. 显式安装缺失的依赖
Angular CLI 5.x的部分版本不会自动将uglifyjs-webpack-plugin添加到项目的package.json中,本地环境可能因为缓存或者之前的安装残留有这个包,但VSTS是全新的构建环境,所以需要手动安装并提交依赖配置:
npm install uglifyjs-webpack-plugin --save-dev
安装完成后,把更新后的package.json和package-lock.json提交到代码仓库,这样VSTS构建时就会自动安装这个必要的依赖。
2. 清理VSTS构建缓存
有时候VSTS会缓存node_modules目录,导致依赖更新不及时或者缺失。你可以在构建流程中添加一个清理步骤,确保每次构建都是全新安装依赖:
- 在VSTS构建任务中,添加一个命令行任务,放在
npm install步骤之前; - 针对Windows环境,执行以下命令:
如果是Linux/macOS环境,用:rd /s /q node_modules del package-lock.jsonrm -rf node_modules rm package-lock.json
3. 确保本地与VSTS的Angular CLI版本一致
本地和VSTS环境的Angular CLI版本不一致,也可能导致依赖需求不匹配。你可以按以下步骤对齐版本:
- 本地执行
ng --version查看当前使用的@angular/cli版本; - 在VSTS的构建任务中,添加一个npm命令安装对应版本的CLI:
或者先全局安装对应版本:npm install @angular/cli@你的本地版本号 --save-devnpm install -g @angular/cli@你的本地版本号
你提供的构建错误日志:
[command]C:\Windows\system32\cmd.exe /D /S /C ""C:\Program Files\nodejs\npm.cmd" run build -- "--env=nightlybuild"" 2018-01-29T19:06:23.9805943Z 2018-01-29T19:06:23.9807508Z > aes-web-portal@0.0.0 build d:\a\1\s\AESWebPortal\aes-web-portal 2018-01-29T19:06:23.9808541Z > ng build "--env=nightlybuild" 2018-01-29T19:06:23.9809016Z 2018-01-29T19:06:26.8023599Z Cannot find module 'uglifyjs-webpack-plugin' 2018-01-29T19:06:26.8041057Z Error: Cannot find module 'uglifyjs-webpack-plugin' 2018-01-29T19:06:26.8041907Z at Function.Module._resolveFilename (module.js:469:15) 2018-01-29T19:06:26.8042680Z at Function.Module._load (module.js:417:25) 2018-01-29T19:06:26.8043360Z at Module.require (module.js:497:17) 2018-01-29T19:06:26.8044136Z at require (internal/module.js:20:19) 2018-01-29T19:06:26.8046229Z at Object.<anonymous> (d:\a\1\s\AESWebPortal\aes-web-portal\node_modules\@angular\cli\models\webpack-configs\production.js:13:24) 2018-01-29T19:06:26.8047263Z at Module._compile (module.js:570:32) 2018-01-29T19:06:26.8048144Z at Object.Module._extensions..js (module.js:579:10) 2018-01-29T19:06:26.8048743Z at Module.load (module.js:487:32) 2018-01-29T19:06:26.8049274Z at tryModuleLoad (module.js:446:12) 2018-01-29T19:06:26.8049758Z at Function.Module._load (module.js:438:3) 2018-01-29T19:06:26.8050286Z at Module.require (module.js:497:17) 2018-01-29T19:06:26.8050774Z at require (internal/module.js:20:19) 2018-01-29T19:06:26.8051383Z at Object.<anonymous> (d:\a\1\s\AESWebPortal\aes-web-portal\node_modules\@angular\cli\models\webpack-configs\index.js:9:10) 2018-01-29T19:06:26.8052009Z at Module._compile (module.js:570:32) 2018-01-29T19:06:26.8052499Z at Object.Module._extensions..js (module.js:579:10) 2018-01-29T19:06:26.8052975Z at Module.load (module.js:487:32)
内容的提问来源于stack exchange,提问作者Iosif Bancioiu
相关产品推荐
相关产品推荐

