这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战
新的一天,小白又遇到了新的挑战——jenkins打包不成功。
下面给大家复现一下问题的解决全过程。
遇到问题
低权限小白看到的jenkins报错
wget: missing URL
运维看到的jenkins报错
gulp: command not found
小白:对对对!我加了新的打包命令gulp && webpack -p,你这个是依赖包没有安装,jenkins 不会主动安装依赖包吗?我的依赖配置都在 package.json 文件里,jenkins 编译的时候应该主动就安装了呀。
运维:怎么安装依赖?
小白:我本地是执行npm i。
运维:脚本执行一下 npm i 试试。
报错:Maximum call stack size exceeded
小白:迷茫,问问我领导吧。
直属领导:你本地 node 版本和 gulp 版本分别是多少?可能是 node 版本和 gulp 版本不一致导致的。
小白:node 版本10,gulp 版本3.9.1。
直属领导:jenkins 上的 node 版本是12,支持的 gulp 版本是4,你给 gulp 升级一下,语法也替换一下。
知识点:node 12.0的版本之后(包括12.0版本)不支持gulp4.0之前的版本
解决问题
将gulp升级为4.0版本,升级gulp语法到4.0版本
查看本地gulp版本
gulp -v
小白:是 3.9.1 没错。
卸载老版本gulp,升级gulp版本至4.0以上
npm uninstall gulp
npm install --save-dev gulp
小白:此时 gulp 版本升级为 4.0.2 。
将本地node版本升级至12以上
n 命令安装指定版本的 node
sudo n 12.22.7
执行打包命令(根据自己package.json文件配置情况执行相应命令)
npm run build
报错:Task function must be specified
小白:语法错误,打开 gulp官网 。
替换gulp语法至4.0
例子:
执行default任务时,依次执行以下任务:
原写法:gulp.task('default', ['htmlmin', 'cssmin', 'jsmin', 'copy']);
改为:gulp.task('default', gulp.series('htmlmin', 'cssmin', 'jsmin', 'copy'));
再次执行打包命令
npm run build
小白:成功!push代码!
小白:jenkins打包还是失败,报错和之前一样,好像不是这个原因导致的,找领导帮忙看一下。
直属领导:缺包,npm i 一下试试。
报错:Maximum call stack size exceeded
小白:懵逼中。。。
直属领导:鼓捣半天, jenkins 打包时没有勾选 npm install 选项。
小白:???可能是之前配过 npm install 选项,不可以在脚本里重复执行 npm install。
虽然是乌龙一场,不太理解什么原因导致的手动执行npm i时出现 Maximum call stack size exceeded 错误,但是 node12 版本只支持 gulp4.0 以上的版本,这个点是正确的;可能这个问题不解决,npm i问题的下一个问题就是它了。
遇到问题有时还是要相信自己看到的原因。
gulp 3.0 升级到 gulp 4.0 Task语法修改参考文献:www.jianshu.com/p/c30ff8592…
node过往版本:nodejs.org/zh-cn/downl…