安裝 node-sass4.x 遇到的問題及解決方案

今天在維護一個基於 vue-cli 創建的舊項目,在安裝依賴時會報錯,具體信息如下:

gyp ERR! stack Error: spawn C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\15.0\Bin\MSBuild.exe ENOENT

於是我順着這個路徑 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\15.0\Bin\MSBuild.exe 看到底有沒有這個目錄,結果到了只匹配到了 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\15.0 後面的路徑沒有匹配,但是同級目錄有個 Current 子目錄 ,然後順着他能找到 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe 。此時我靈機一動,如果把 Current 目錄名稱改成 15.0 不就可以了,於是改完後,重新安裝一下, 結果還是報了是其他的編譯錯誤信息。

然後,上網查了一下,有人說是 [email protected] 的問題,它只能使用 vs2017 來編譯,而不能使用 vs2019,但是如果安裝 [email protected] 就不會有這個問題,所以我就試試安裝 [email protected]。安裝確實好順利,沒有任何問題,可是在啟動項目的時候,sass-loader 卻報錯了:

Error: Node Sass version 5.0.0 is incompatible with ^4.0.0.

這是 vuesass-loader 報的錯,不兼容 node-sass5.0.0。所以升級 node-sass 的方式也是行不通。

這時候,只能想辦法安裝一個 vs2017 了,但是我平時在搞 UE4 用的是 vs2019,不想卸掉重新安裝舊版的。幸好 ,visual studio install 裏面可以同時安裝多個不同版本的 vs,所以我裝了 vs2017 後,再設置一下 npm 的 msvs_version 變量:

npm config set msvs_version 2017

然後,再安裝 [email protected] 就成功了。問題至此已解決。

另外,目前 sass 官網已經廢棄了 node-sass 了,而是推薦使用 dart sass ,所以也可以改成一下 sass-loader 的配置,這樣就不需要安裝 node-sass ,就不會出現編譯錯誤了。至於怎麼修改配置,這裡也不展開介紹,有興趣的可以自行查找一下。

Tags: