一、问题描述
5月13号晚,前端需要上一个测试环境项目,按照原来的步骤操作,我运维这边只需要在jenkins上增加一个任务,然后构建即可。(这个项目是从另一个运行中的项目,直接完整复制过来的)
很明显的,报错了,不然怎么会有这篇博客。
一开始还没想到是package.json里的版本问题,就尝试看前端是否提交少了代码,答案:不是!
然后排查服务器环境问题、cnpm npm node 等等都有了,也并不是环境问题
临时解决问题的方法是:将其他项目的node_modules放到这个新项目来了,问题得到临时解决,当这个步骤做完,
就有个新的排查方向了,安装的依赖问题,
二、操作流程:
jenkins添加job,进行构建,进行cnpm编译
开始报错原因
1、找不到npx,那就安装npx
2、安装完npx后,再次尝试,又出现新的错误,获取不到package-lock.json(之前并不需要这个,既然没有那就加,试试)
再次尝试install,加了package-lock.json,也还是不行的
3、捕获到 rollback@^0.2.5 的异常
接着去查看pckage.json这个版本,一看带了^,尝试着 把^去掉,重新install,成功
下面是对于 "^" 符合的解释
4、猜测大几率是版本更新了
打开https://www.npmjs.com/package/rollback
果然
三、总结情况
1、为什么一开始别的项目也使用 "^" 不会出错。
因为,其他项目那会还没出新版本
2、如何避免这类问题
做好版本控制,避免使用 "^" 这类应用,多关注更新迭代
3、当测试去掉 "^" 后,并不能马上执行上线,需要告知前端,评估,并且查看该包的更新情况,避免出现其他版本上问题
4、使用其他第三方软件、包、闭源、开源的、都需要注意版本问题、社区、人员是否活跃、文档整齐之类的