记一次npm和yarn没有锁死引发的编译错误问题

一早来到公司,同事说Jenkins一直报错,无法编译,让我看看怎么回事。

打开编译日志,看到以下错误


错误日志

一开始还以为是,我把TypeScript分支不小心合并到了发布分支上面,最近在研究vue和TypeScript结合,起了一个分支来搞这个事情。

但是看了下git记录,并没有记录,我还特意看了下yarn.lock的eslint的版本,发现也没有升级。

很奇怪,然后打开Jenkins的编译发布代码,看到如下配置,瞬间知道了原因

Jenkins的编译发布代码

我们开发环境一直用的是yarn,没有用npm,代码里面也没有package-lock.json,昨天升级了的我们公司的eslint的包,增加了TypeScript的检测和支持,所以在所以Jenkins用npm编译的时候,默认拉了最新的包,又因为package.json没有锁死版本,导致需用用到TypeScript,导致出错了。

切换下配置命令

yarn
npm run pre

在发布下,发现又失败了

10:35:03 error [email protected]: The engine "node" is incompatible with this module. Expected version "6.* || 8.* || >= 10.*". Got "9.10.0"
10:35:03 error Found incompatible module.

版本不一致,导致又发布失败,切换node版本,再发布,成功了。

目前公司前端发布依赖于Jenkins,开发环境和线上编译有时会不一致,最好就是换掉Jenkins,发布专门用一个库来管理,用gitlab 自带的ci环境,这样才能最大限度减少这方面的问题。

你可能感兴趣的:(记一次npm和yarn没有锁死引发的编译错误问题)