升級 node16 后 vue 項目中 sass 報錯踩坑記錄

最近電腦更新到了Windows 11湖雹,安裝 node.js 的時候發(fā)現(xiàn)官網(wǎng)推薦的版本已經(jīng)從 14.x 變?yōu)?16.x ,心想 node.js 版本間兼容性應該不會有太大問題二鳄,于是便安裝了 node.js 16.x 的版本赴涵,然而一切并沒有想象中順利。

安裝完 node 之后便是克隆項目订讼,npm i 安裝依賴髓窜,這時候報錯了:

npm ERR! code 1
npm ERR! path C:\icsd\software\tent-admin\node_modules\node-sass
npm ERR! command failed
npm ERR! command C:\Windows\system32\cmd.exe /d /s /c node-gyp rebuild
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@3.8.0
npm ERR! gyp info using node@16.13.0 | win32 | x64
npm ERR! gyp ERR! configure error
npm ERR! gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.

從報錯的字面內(nèi)容來看,是在安裝 node-sass 時出的錯欺殿,而且原因是 Can't find Python executable "python" (沒有Python環(huán)境寄纵?)

之前安裝依賴只要執(zhí)行 npm i 就行呀,為啥node的項目需要Python環(huán)境了呢祈餐?
搜索之后了解到擂啥,如果 npm 請求 node-sass 文件失敗,會嘗試本地編譯安裝 node-sass 帆阳,這時候需要執(zhí)行 npm install -g windows-build-tools 安裝 windows-build-tools 哺壶。然而,更換了淘寶 npm 鏡像蜒谤,安裝windows-build-tools 之后依舊報一樣的錯誤山宾。

根據(jù) node-sass 官網(wǎng)的說法,不同的 node.js 版本需要安裝不同的 node-sass 版本鳍徽,并且 node-sass 已經(jīng)廢棄资锰,推薦使用 Dart Sass 代替,Dart Sass 在 npm 中的包名為 sass .

查看 package.json 發(fā)現(xiàn)原項目的 node-sass 版本為 4.14.1 , sass-loader 版本為 8.0.2 于是卸載了 node-sasssass-loader 阶祭,并重新安裝:

# 卸載
npm uninstall node-sass sass-loader

#重新安裝 
npm i sass-loader sass -S -D

然而绷杜,還是出現(xiàn)報錯:

npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR!
npm ERR! While resolving: tent-admin@1.8.3
npm ERR! Found: webpack@4.46.0
npm ERR! node_modules/webpack
npm ERR! peer webpack@"^4.0.0" from @intervolga/optimize-cssnano-plugin@1.0.6

...
npm ERR! Could not resolve dependency:
npm ERR! dev sass-loader@"" from the root project
npm ERR!
npm ERR! Conflicting peer dependency: webpack@5.62.1
npm ERR! node_modules/webpack
npm ERR! peer webpack@"^5.0.0" from sass-loader@12.3.0
npm ERR! node_modules/sass-loader
npm ERR! dev sass-loader@"
" from the root project

從上面的報錯信息來看,最新的 sass-loader@12.3.0 要求 webpack@"^5.0.0"濒募,然而 vue 項目中 webpack 版本為 4.46.0 鞭盟,因此出現(xiàn)沖突」逄辏考慮到 vue 項目是通過 vue-cli 創(chuàng)建的齿诉,并非自行配置的 webpack ,因此考慮通過升級 vue-cli 來更新 webpack.

# 全局安裝 vue/cli
npm install -g @vue/cli
# 更新項目中的vue-cli依賴
vue upgrade

更新后發(fā)現(xiàn),最新的 vue-cli@4.5.15 依舊是基于 webpack@4.x 版本粤剧,那么只能考慮降一下 sass-loader 的版本了歇竟,根據(jù) vue-cli 的文檔:

Note on webpack 4

When using webpack version 4, the default in Vue CLI 4, you need to make sure your loaders are compatible with it. Otherwise you will get errors about confliciting peer dependencies. In this case you can use an older version of the loader that is still compatible with webpack 4.

# Sass
npm install -D sass-loader@^10 sass

按照官方的說法,安裝 10.x 版本的 sass-loader 后抵恋,所有依賴成功安裝焕议,項目可以正常運行。

本來以為只是升級一下 node 版本馋记,沒想到花了這么長時間踩坑号坡。看到網(wǎng)上大部分解決方案都是降級回 node.js 14梯醒,所有在這里把采坑全經(jīng)過寫下來宽堆,希望對大家有所幫助。

Reference

  1. node.js - npm - "Can't find Python executable "python", you can set the PYTHON env variable." - Stack Overflow
  2. sass/node-sass: Node.js bindings to libsass
  3. Installation | Vue CLI
  4. Working with CSS | Vue CLI
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末茸习,一起剝皮案震驚了整個濱河市畜隶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌号胚,老刑警劉巖籽慢,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異猫胁,居然都是意外死亡箱亿,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門弃秆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來届惋,“玉大人,你說我怎么就攤上這事菠赚∧员” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵衡查,是天一觀的道長瘩欺。 經(jīng)常有香客問我,道長拌牲,這世上最難降的妖魔是什么俱饿? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮塌忽,結果婚禮上稍途,老公的妹妹穿的比我還像新娘。我一直安慰自己砚婆,他們只是感情好,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著装盯,像睡著了一般坷虑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上埂奈,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天迄损,我揣著相機與錄音,去河邊找鬼账磺。 笑死芹敌,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的垮抗。 我是一名探鬼主播氏捞,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼冒版!你這毒婦竟也來了液茎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤辞嗡,失蹤者是張志新(化名)和其女友劉穎捆等,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體续室,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡栋烤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了挺狰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片明郭。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖她渴,靈堂內(nèi)的尸體忽然破棺而出达址,到底是詐尸還是另有隱情,我是刑警寧澤趁耗,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布沉唠,位于F島的核電站,受9級特大地震影響苛败,放射性物質(zhì)發(fā)生泄漏满葛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一罢屈、第九天 我趴在偏房一處隱蔽的房頂上張望嘀韧。 院中可真熱鬧,春花似錦缠捌、人聲如沸锄贷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谊却。三九已至柔昼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間炎辨,已是汗流浹背捕透。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留碴萧,地道東北人乙嘀。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像破喻,于是被迫代替她去往敵國和親虎谢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345