2017-07-29 59 views
2

我正在Azure上運行Node web應用程序。 我使用「local git」方法部署應用程序。 每當我對源代碼進行更改,提交併使用git push azure master進行部署時,網站上的代碼都會按預期進行更新。如何讓Azure nodejs webapp重新運行npm install?

但我最近的一個變化包括添加一個新的包到我的package.json文件。現在,當我部署時,我的文件已更新,但azure似乎不會重新運行npm install,並且未安裝新模塊。這意味着該應用程序無法啓動:當我的代碼調用require('missingModuleName')時,它會發生致命錯誤並停止。

上次我遇到了這個問題,我從Azure中刪除了應用程序,並從頭創建了一個新應用程序。但我希望有一個更簡單的解決方案。

我看到(在https://github.com/projectkudu/kudu/wiki/Deployment)部署「對於節點站點,Kudu在wwwroot文件夾中運行'npm install'」。我不確定標準的「本地git」部署方法是否調用Kudu部署過程。我是否需要創建部署掛鉤(如https://github.com/projectkudu/kudu/wiki/Deployment-hooks中所述)?

安裝日誌顯示: 2017-07-29T07:59:51 Updating branch 'master'. 2017-07-29T07:59:52 Updating submodules. 2017-07-29T07:59:52 Preparing deployment for commit id '556a34aab5'. 2017-07-29T07:59:52 Running custom deployment command... 2017-07-29T07:59:52 Running deployment command... 2017-07-29T07:59:52 Command: deploy.cmd 2017-07-29T07:59:53 Handling node.js deployment. 2017-07-29T07:59:53 KuduSync.NET from: 'D:\home\site\repository' to: 'D:\home\site\wwwroot' 2017-07-29T07:59:53 Copying file: 'package.json' 2017-07-29T07:59:53 Looking for app.js/server.js under site root. 2017-07-29T07:59:53 Using start-up script server.js 2017-07-29T07:59:55 Node.js versions available on the platform are: 0.6.20, 0.8.2, 0.8.19, 0.8.26, 0.8.27, 0.8.28, 0.10.5, 0.10.18, 0.10.21, 0.10.24, 0.10.26, 0.10.28, 0.10.29, 0.10.31, 0.10.32, 0.10.40, 0.12.0, 0.12.2, 0.12.3, 0.12.6, 4.0.0, 4.1.0, 4.1.2, 4.2.1, 4.2.2, 4.2.3, 4.2.4, 4.3.0, 4.3.2, 4.4.0, 4.4.1, 4.4.6, 4.4.7, 4.5.0, 4.6.0, 4.6.1, 4.8.4, 5.0.0, 5.1.1, 5.3.0, 5.4.0, 5.5.0, 5.6.0, 5.7.0, 5.7.1, 5.8.0, 5.9.1, 6.0.0, 6.1.0, 6.2.2, 6.3.0, 6.5.0, 6.6.0, 6.7.0, 6.9.0, 6.9.1, 6.9.2, 6.9.4, 6.9.5, 6.10.0, 6.11.1, 7.0.0, 7.1.0, 7.2.0, 7.3.0, 7.4.0, 7.5.0, 7.6.0, 7.7.4, 7.10.0, 7.10.1, 8.0.0, 8.1.4. 2017-07-29T07:59:55 Selected node.js version 8.1.4. Use package.json file to choose a different version. 2017-07-29T07:59:55 Selected npm version 5.0.3 2017-07-29T07:59:56 Updating iisnode.yml at D:\home\site\wwwroot\iisnode.yml 2017-07-29T07:59:56 npm WARN lifecycle The node binary used for scripts is D:\Program Files (x86)\nodejs\0.10.28\node.exe but npm is using D:\Program Files (x86)\nodejs\8.1.4\node.exe itself. Use the `--scripts-prepend-node-path` option to include the path for the node binary npm was executed with. 2017-07-29T08:00:03 npm WARN [email protected] No repository field. 2017-07-29T08:00:03 up to date in 7.206s 2017-07-29T08:00:03 npm WARN [email protected] No license field. 2017-07-29T08:00:03
2017-07-29T08:00:03 Finished successfully. 2017-07-29T08:00:03 Running post deployment command(s)... 2017-07-29T08:00:03 Deployment successful.

+2

爲了幫助隔離,如果使用Kudu控制檯從'site/wwwroot'手動運行'npm install',會發生什麼? –

回答

2

的問題是與package-lock.json。我在本地使用舊的npm版本3,並沒有創建一個包鎖定文件(並且我還沒準備好用於收縮包裝)。

但Azure 上較新的npm版本5確實創建了創建了package-lock.json。這似乎優先於package.json

所以我在本地升級了npm(花了一段時間才發現我需要nodist npm latest這樣做),並將package-lock.json添加到我的git回購中。然後當它部署時,npm花了相當一段時間,但它爲我安裝了一切。