2017-08-13 143 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 

工程现在却增加了部署的时间,会看看其他模块添加更多。