前端項目 node8升級到node16,代碼升級匯總


背景

  公司的項目是vue項目,環境是node@8x版本的,最近我創建react hook的項目,發現至少需要node14才支持,打開官網才發現node都已經到16版本了。失策啊,失策。於是直接升級到最高版本。結果項目直接跑不起來了,看了下日志問題挺多的。我折騰了小1天才弄好。里面坑不少,最關鍵的是網上好多人的帖子太操蛋了,太水了。在這立個貼,和大家分享一下,如果遇到一樣的問題,應該會有很大的幫助。 

  對了,我升級的是vue2.0的項目,而我vue3.0的項目完全不受影響。原因嘛,我大致看了下package.json文件,cli都是最新的,而且沒有node-sass。我想可能是內置了。所以在這再提醒一下,老版本vue-cli創建的項目,應該會遇到和我一樣的問題。

 

問題和解決方法匯總

  1、node-sass 升級,直接導致項目運行失敗

  2、如果用vue-cli創建的項目需要升級,webpack支持到5.0版本,自己搭建的得自己升級了

  3、polyfill 棄用了,使用 core-js   regenerator-runtime

  4、

 

具體操作

  1、首先安裝node最新版本,截至我發帖時間,最新穩定版本為 node16.13.1,

  2、更新node-sass,每個版本的node,都會有對應版本的node-sass。而且好像是14之后的版本更新很大,直接不兼容了,所以會報錯。這里我們先去下載node-sass的版本包  點這里下載  ,下載第一個文件(下邊有貼圖)。下載成功之后,將這個包,放到你的賬戶下,具體路徑是  C:\Users\你的用戶名\AppData\Roaming\npm-cache\node-sass  , 然后創建一個名為 6.0.1  的文件夾,然后把剛下載的包,復制到這個文件夾中。我下面都貼圖了。這樣能保證你安裝node-sass依賴的時候不會一直報錯。

  3、安裝node-sass@6.0.1,npm i --save node-sass@6.0.1   如果還是報錯,檢查一下上述幾步是否有漏的,正常不會報錯了。

  4、升級vue-cli,以下是正常的升級流程。先試一下,可能會有人更新失敗,再說一個粗暴點的方法,用vue-cli直接創建一個vue2.0的新項目,將老項目node-modules刪除,將新項目的node-modules復制過來,然后新項目的package.json的  devDependencies  部分,一條條的替換老項目的,一共三四條。

   vue -V             檢查當前vue-cli的版本, 如果報錯 指令不存在 或者沒權限啥的,  在powershell里面執行  start cmd 直接打開cmd輸入這些指令           
    npm uninstall vue-cli -g    卸載老版本
    npm install -g @vue/cli     全局安裝新版本
    vue -V             檢查版本號,我的是4.5.15
    vue upgrade          升級項目中腳手架相關的包

 

   5、然后保險起見,還是刪除整個node-dules,刪除package-lock.json,都清空。

   6、刪除整個node-dules,看一下main.js和package.json 有沒有使用 @babel/polyfill 這個依賴,這個包現在已經廢棄了,換成了  core-js   regenerator-runtime 這兩個包,裝一下這兩個依賴,然后修改main.js入口文件,去掉廢棄的,增加新的2個,下面有代碼貼圖。

  npm uninstall @babel/polyfill  // 卸載@babel/polyfill
  npm install core-js
  npm install regenerator-runtime

  7、重新執行 npm install ,安裝所有依賴,重新啟動項目即可

 

 

 

node-sass版本的圖片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

總結

  東西其實不多,主要卡在node-sass安裝一直失敗,手動添加了版本包。在一個就是新版本的cli都用的 core-js,需要改項目代碼,否則就會一堆報錯,提示缺各種依賴。這兩塊浪費了我大量的時間,網上一堆沒用的文章,各種粘貼復制、轉載,真的想罵娘。

  最后,建議大家搜索的東西的時候加上  -(CSDN) -(腳本之家)     哈哈,把垃圾信息都屏蔽掉。基本剩下的都是博客園、簡書啥的,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM