npm run dev 以及 npm run build 報錯解決思路:Module build failed ( from ./who/who/who )

最近有一個vue項目做完了,需要打包上測試環境進行測試,本來開開心心的,md,結果代碼放到線上之後怎麼編譯都不過,各種報錯,簡直五花八門,解決一個問題就出現另一個不同的問題,搞得我頭都大了。

在這裏把解決問題過程的思路記錄一下:

1、本地開發環境node的版本與線上環境node的版本要一致。
查看node版本:node -v

2、node_modules目錄不可被重用。
項目的打包管理使用的Jenkins,然後從Git上拉代碼,Jenkins是什麼?

Jenkins是一個開源的、提供友好操作界面的持續集成(CI)工具,起源於Hudson(Hudson是商用的),主要用於持續、自動的構建/測試軟件項目、監控外部任務的運行。通常與版本管理工具(SCM)、構建工具結合使用。常用的版本控制工具有SVN、GIT,構建工具有Maven、Ant、Gradle。

在線上環境,我們項目的測試大大對node_modules目錄做了一個軟連接,其他項目所使用的node_modules也都指向了同一個node_modules目錄,也就是所有的vue項目使用同一個node_modules目錄。

3、cnpm和npm儘量不要混合使用。
如果使用的npm安裝的包,儘量不要再使用cnpm安裝,保證依賴包的源一致。

查看當前的包管理是npm還是cnpm使用指令:npm config list
找到metrics-registry屬性:

npm:"https://registry.npmjs.org/"
cnpm:"https://registry.npm.taobao.org/"

如圖,我使用的是npm:
在這裏插入圖片描述
4、問題無法解決,那便刪掉node_modules目錄,重新npm install

重點:本地項目中的package-lock.json文件一定要與線上環境的package-lock.json內容一致。

package-lock.json是在install的時候自動生成的文件。
package-lock.json就是鎖定安裝時的包版本號,這樣就能保證其他人在安裝項目依賴的時候,大家使用的包的版本號相同,不會出現紕漏。
package.json文件只能鎖定大版本,即版本號的第一位,不能鎖定後面的小版本,你每次npm install時候拉取的該大版本下面最新的版本。
一般爲了穩定性考慮我們不能隨意升級依賴包,因爲如果換包導致兼容性bug出現很難排查,所以package-lock.json就是來解決包鎖定不升級問題的。

如果要升級package-lock.json裏面的庫包,需要使用指令:npm install [email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章