原有項目、環境:node
node:v8.16.2python
npm:v6.4.1c++
node-sass::v4.8.0git
Angular-CLI:v6.xgithub
本機沒有安裝 Visual Studiosql
以上是涉及到的工具的版本,可正常使用,項目運行良好。npm
後來,接手的新項目中:json
Angular-CLI:v8.xwindows
因爲升級了 Angular 版本,一樣也升級了 Angular-CLI 版本,致使 v8.x 版本的 node 已經沒法編譯 angular 項目,至少須要使用 node v10.x 版本。瀏覽器
無奈,升級了 node 版本,隨之而來的就是 node-sass v4.8.0 版本沒法使用,又致使構建失敗,因此又得安裝新版本 node-sass。
但 node-sass 新版本安裝過程卻又報找不到 Python 環境錯誤,致使 install 失敗。
好不容易在本地安裝了 Python 環境,又報了個 MSB4132:沒法識別工具版本 2.0 的錯誤。
在網上查了半天,跟着改,卻又出現新錯誤 MSB4019:Microsoft.Cpp.Default.props 找不到的錯誤。
找了下,發現是由於本機沒有 VS C++ 的編輯工具,能夠藉助:
npm install -g --production windows.build.tools
來下載安裝,試了下,發現是須要聯網才行,辦公網絡沒外網。
官網看了半天,找到了下載離線安裝包方式、結果倒是 2019 版本,太新,項目仍舊報錯。
(what the fuck!
gyp info spawn xxx error MSB4019:未找到導入的項目 "E:\Microsoft.Cpp.Default.props"。請確認 <Import> 聲明中的路徑正確,且磁盤上存在該文件 gyp ERR! stack Error `C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe` failed with exit code: 1
gyp verb Not using VS2017: Could not use PowerShell to find VS2017 ... gyp verb could not find "msbuild.exe" in PATH - finding location in registry ... MSBUILD : error MSB4132: 沒法識別工具版本「2.0」。可用的工具版本爲 "4.0"。
gyp verb check python checking for Python executable "python2" in the PATH gyp verb `which` failed Error: not found: python2
gyp ERR! This is a bug in `node-gyp`. gyp ERR! Try to update node-gyp and file an Issue if it does not help
歸根結底,就是由於辦公網絡被限制訪問外網致使。
畢竟升級了 angular 大版本,隨之而來的一些依賴庫也須要跟着升級,這無可厚非,能夠理解,因此當讓我也升級 node-sass 時,我沒啥反感。
但誰知道,node-sass 新版的下載須要依賴 C++ 的編譯環境、須要依賴 python 環境,雖然到這裏有點煩了,但還好,網上也不少人出現這問題,解決方案不難,以下:
npm install --global --production windows-build-tools
windows-build-tools 的介紹能夠看看官方網站:
https://www.npmjs.com/package/windows-build-tools
這條命令,其實就是會自動去聯網下載 Visual C++ Build Tools 和安裝 Python 2.7 環境,一鍵式命令。
但,個人辦公網絡沒法訪問外網啊!
雖然有內網的 Npm 倉庫,但也只下載了 windows-build-tools 這個包,這包裏是一堆去訪問外網下載東西的腳本啊,對我來講,這解決方案沒用啊!
無奈下,只能本身安裝,Python 還好,網上搜一下,安裝 + 配置環境變量便可。
問題就在於 Visual C++ Build Tools,這個 Mircosoft 的東西,要搞離線安裝,是真的麻煩。
這裏有官方的教程(雖然沒怎麼看懂),以及網上大佬的教程,連接都貼出來,我這裏就大概講講,感興趣,自行查閱:
之因此之前正常,新項目出現種種問題,緣由在於各環境的版本升級,因此,須要明確,各個環境、框架之間都是有依賴關係的,不是任意版本組合就能夠的,好比:
angular v8 版本就須要依賴 angular-cli 到 v8.x 版本;
angular-cli v8.x 版本就須要依賴 node 到 v10.x 版本;
node-sass v4.8 只支持到 node v9 版本;
因此,當須要升級 angular 版本時,請注意這些事項,具體的依賴關係,請到各自的官網中查看說明。
建議多去相關庫的 github 的 issue 裏找找,一般都能找到你遇到的問題
辦公網絡一般沒法訪問外網,但都會有本身內部的鏡像倉庫,因此下載基本的 node 之類的庫是沒有問題的,上面的解決步驟也同樣能夠參考執行。
不能訪問外網最重要的一點就是,windows 的東西無法下載,好比上面的 windows-build-tools 自動去下載 vs c++ 的編譯工具就下載不了。
這時候,若是須要,那就只能在能訪問外網的機子上,將 vs studio 相關東西先下載下來,再用離線方式進行安裝。
其實,我最後即便離線安裝了 vs studio 2019 的版本以後,node-sass 仍舊仍是下載失敗,最後,實在沒時間去研究了,乾脆在能訪問外網的機子上面,也安裝同版本的 node,而後成功下載好 node-sass 以後,將這個 node-sass 包直接拷貝到辦公機子上面使用了。
如下是不少不少的連接,有的有提出解決方案,有的沒有,自取: