在家裡電腦體驗過無比順暢的VS2015 Cordova專案經驗,準備在公司展開Cordova大冒險,萬萬沒想到,公司機車特殊的網路環境(之前已被SSL中間人憑證搞過多次),原本簡單的自動下載編譯部署執行,變成可歌可泣的天堂路。喵的,我又想唱金包銀惹…

上回提過,VS2015封裝了複雜繁瑣的npm Cordova模組下載、安裝過程,按下編譯或執行鈕,Visual Studio就會默默搞定一堆雜工,使用者眼不見心不煩,當個快樂的小傻瓜尊貴的上流開發者就好。家庭背景特殊的小孩總是比較早熟,網路環境特殊的開發人員也是,無法茶來伸手飯來張口,動手寫程式前得先陪Visual Studio蹲在地上做雜工。

在公司環境,VS2015安裝過程順利,建立Cordova專案也沒什麼問題,但按下編譯鈕,Output視窗出現以下訊息:

1>------ Build started: Project: BlankCordovaApp1, Configuration: Debug Android ------
1>  Your environment has been set up for using Node.js 0.12.3 (x64) and npm.
1>  ------ Ensuring correct global installation of package from source package directory: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ApacheCordovaTools\packages\vs-tac
1>  ------ Name from source package.json: vs-tac
1>  ------ Version from source package.json: 1.0.0
1>  ------ Package already installed globally at correct version.
1>  ------ Cordova tools 4.3.1 already installed.
1>  ------ Build Settings:
1>  ------ Build Settings:
1>  ------    platformConfigurationBldDir: x:\temp\CordovaLab\BlankCordovaApp1\bld\Android\Debug
1>  ------    platformConfigurationBinDir: x:\temp\CordovaLab\BlankCordovaApp1\bin\Android\Debug
1>  ------    buildCommand: prepare
1>  ------    platform: Android
1>  ------    cordovaPlatform: android
1>  ------    configuration: Debug
1>  ------    cordovaConfiguration: Debug
1>  ------    projectName: BlankCordovaApp1
1>  ------    projectSourceDir: x:\temp\CordovaLab\BlankCordovaApp1
1>  ------    npmInstallDir: C:\Users\jeffrey\AppData\Roaming\npm
1>  ------    language: en-US
1>  ------ Adding platform: android
1>  No version supplied. Retrieving version from config.xml...
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

呃,只知道Build 1 failed,完全沒有失敗原因。原來是因為Visual Studio預設只顯示最少的編譯訊息,而Cordova專案依賴外部編譯器編譯,編譯過程的詳細訊息預設不會顯示。需調整如下圖,將「MSBuild project build output verbosity」由Minimal改為Normal以上等級:

重新執行一次,便可在Output視窗找到錯誤原因:npm http GET httqs:/registry.npmjs.org/cordova-android/3.7.2時發生"Unable to fetch platform android: Error: certifiate not trusted"。

不用懷疑,又是公司網管設備偷換中間人SSL憑證搞的鬼,之前雖然設過npm cafile,知何故不管用。另外,還發現Cordova編譯過程也會從github下載東西,也可能有HTTPS問題。MSDN文件寫得挺詳細,有提到如何設定Proxy解決npm及git連線問題,依著這個線索及同樣原理,試著暫時停用npm及git的SSL驗證排除問題:

npm set strict-ssl false
git config http.sslVerify "false"

呼,終算編譯成功~


Comments

Be the first to post a comment

Post a comment