2017-08-13 139 views
0

Deploy NodeJS app to Azure from VS Code成功 - 第一初始提交:的NodeJS應用程序部署問題

$ git push azure master 
... 
remote: Updating branch 'master'. 
remote: Updating submodules. 
... 

然後加入dotenv-extended模塊app.js

require('dotenv-extended').load(); 

NPM"dotenv-extended": "^2.0.1"添加到package.json文件中。之後,承諾,推到github上,然後推到像上面一樣天藍色。

在第二次然而Azure中沒有執行子模塊更新和dotenv-extended沒有在其中加入.gitignore在我身邊/node_modules/*安裝在Azure上。這導致應用程序異常被強制轉爲天藍色並手動運行npm install dotenv-extendednpm update

在第三次部署 Azure的印刷:

remote: Updating branch 'master'. 
remote: Updating submodules. 
... 
remote: npm WARN [email protected] No description 
remote: removed 15 packages in 31.134s 
remote: npm WARN [email protected] No repository field. 

,當我檢查dotenv-extended再次被擦除,即使我安裝了手動前。

  • 爲什麼會發生這種情況,爲什麼azure第二次沒有運行remote: Updating submodules
  • 如果我稍後需要添加一些模塊,該如何解決這個問題?
  • 是否可以修復或擴展Azure上的某些部署後腳本以添加npm update命令?
  • 或者手動安裝它們哪個不好?
  • 或者還有另一種不用git的方式部署?

P.S.認爲建議的解決方案 Git push to azure websites with submodule將無法​​正常工作,因爲Git Azure 由於某種原因會擦除模塊。

+1

https://stackoverflow.com/questions/11939728/git-push-to-azure-websites-with-submodule –

+0

@YeLwinSoe感謝您的鏈接,但有些不太清楚:請你解釋這個更詳細 - 請問需要做?將'/ node_modules/*'作爲子模塊添加到主repo中?但我不想在github上提交它。 –

回答

0

似乎有些Azure中的問題,它使用kudusyncNPM模塊repositorywwwroot同步和工作走錯了路。以下順序幫我解決這個問題:

  • 轉到Azure中Kudu
  • 打開Debug Console -> CMD
  • 執行:
    • CD D:\home\site\repository>
    • npm udpate
    • CD D:\home\site\wwwroot>
    • npm udpate 由於某些原因,Azure腳本僅在第一次部署時纔在repository dir中安裝npm模塊,並且不要進一步更新。以上命令允許同步repositorywwwroot目錄,並防止從wwwroot中刪除不存在於repository中的軟件包。但是需要在每個添加的軟件包上執行此操作。

現在工作正常後,所有以上。人suggest承諾package-lock.json,但是這個解決方案沒有幫助我:Azure部署腳本從D:\home\site\wwwroot>卸載不存在於D:\home\site\repository>中的模塊,並且出現以上錯誤。

+0

該解決方案現在可用。 –

0

它看起來像加載模塊時出現問題。默認情況下,Azure Web Apps的部署任務使用npm install --production命令在您的package.json中安裝依賴項,這將跳過在devDependencies部分中配置的所有依賴項。所以請確保dotenv-extended被放置在dependencies

+0

模塊在'dependencies'中,'devDependencies'在我這邊是空的。其他解決方案? –

+1

您可以設置[自定義部署腳本](https://github.com/projectkudu/kudu/wiki/Custom-Deployment-Script),以便爲您的應用程序添加'npm update'命令。請參閱[使用Git部署的Microsoft Azure Web App(網站)自定義部署腳本](http://blog.amitapple.com/post/38417491924/azurewebsitecustomdeploymentpart1/#.WZOjJFEjGUl)。 –

+0

自定義部署腳本方法會覆蓋未複製到'wwwroot'的Azure默認方法和源。需要另一個或更多詳細的解決 –

0

注意。下面提到的自定義部署腳本方法會覆蓋未複製到wwwroot的Azure默認方法和源。需要另一個 或更詳細的解決方案。

根據Custom Deployment Script添加文件到我的git倉庫的根目錄與名稱.deployment和內容:

[config] 
command = cd %DEPLOYMENT_TARGET% && echo "npm update ..." && npm update --quiet 

工程現在卻增加了部署的時間,會看看其他模塊添加更多。