code-push-server部署windows系統踩坑記
阿新 • • 發佈:2019-02-04
code-push-server在windows上無法下載更新包的問題分析。
先上結論:windows下預設有環境變數PUBLIC=C:\User\Public 把這個環境變數刪除就可以正常下載了
分析過程:
這個檔案無法下載返回404錯誤,檢查更新包的目錄,發現這個檔案是存在的。而 http://ip:port/updateCheck 不提示404說明push-server已經啟動成功,而download uri監聽出現了問題,繼續搜尋原始碼中監聽/download的程式碼,發現app.js中有一行
app.use(_.get(config, 'local.public', '/download’), express.static(localStorageDir));
這個地方就是監聽/download埠的地方
app.use的第一個引數代表監聽的uri,它的值應該是/download,第二個引數代表路由模組。這是一個監聽本地靜態檔案的模組
把_.get(config, 'local.public', '/download’) 的內容打印出來,它的值竟然是C:\User\Public
而config物件的生成是放在/config/config.js檔案中的。
...
local:{
...
45: public: process.env.PUBLIC || '/download'
…
},
…
結論:在windows下預設存在PUBLIC環境變數,而osx上預設不存在PUBLIC環境變數,
因此在osx上可以正常監聽/download,而在WINDOWS下不能正常監聽download
解決方案是用set PUBLIC= 命令刪除PUBLIC環境變數