記一次npm和yarn沒有鎖死引發(fā)的編譯錯誤問題

一早來到公司,同事說Jenkins一直報錯,無法編譯,讓我看看怎么回事。

打開編譯日志,看到以下錯誤


錯誤日志

一開始還以為是,我把TypeScript分支不小心合并到了發(fā)布分支上面,最近在研究vue和TypeScript結(jié)合,起了一個分支來搞這個事情。

但是看了下git記錄,并沒有記錄,我還特意看了下yarn.lock的eslint的版本,發(fā)現(xiàn)也沒有升級。

很奇怪,然后打開Jenkins的編譯發(fā)布代碼,看到如下配置,瞬間知道了原因

Jenkins的編譯發(fā)布代碼

我們開發(fā)環(huán)境一直用的是yarn,沒有用npm,代碼里面也沒有package-lock.json,昨天升級了的我們公司的eslint的包,增加了TypeScript的檢測和支持,所以在所以Jenkins用npm編譯的時候,默認拉了最新的包,又因為package.json沒有鎖死版本,導(dǎo)致需用用到TypeScript,導(dǎo)致出錯了。

切換下配置命令

yarn
npm run pre

在發(fā)布下,發(fā)現(xiàn)又失敗了

10:35:03 error get-caller-file@2.0.5: The engine "node" is incompatible with this module. Expected version "6.* || 8.* || >= 10.*". Got "9.10.0"
10:35:03 error Found incompatible module.

版本不一致,導(dǎo)致又發(fā)布失敗,切換node版本,再發(fā)布,成功了。

目前公司前端發(fā)布依賴于Jenkins,開發(fā)環(huán)境和線上編譯有時會不一致,最好就是換掉Jenkins,發(fā)布專門用一個庫來管理,用gitlab 自帶的ci環(huán)境,這樣才能最大限度減少這方面的問題。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容