NodeJS应用程序部署问题

时间:2017-08-13 00:40:49

标签: node.js git azure deployment visual-studio-code

从VS代码将NodeJS应用程序部署到Azure,如下所述:Deploy NodeJS app to Azure from VS Code成功 - 首次初始提交:

$ 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。

然而第二次 Azure未执行子模块更新,并且dotenv-extended中的/node_modules/*未安装.gitignore,而npm install dotenv-extended已添加到我这边npm update。这导致了应用程序异常,因此被迫转到azure并手动运行remote: Updating branch 'master'. remote: Updating submodules. ... remote: npm WARN MyApp@1.0.0 No description remote: removed 15 packages in 31.134s remote: npm WARN MyApp@1.0.0 No repository field. dotenv-extended

第三次部署Azure打印:

remote: Updating submodules

当我检查npm update时,即使我先前手动安装了它,也会再次删除。

  • 为什么会发生这种情况,为什么azure第二次没有运行var data = new Array(3) data[0] = [4, "New Orleans",24]; data[1] = [7, "Houston",89]; data[2] = [2, "Los Angeles",47]; document.write(data);
  • 如果我以后需要添加一些模块,如何解决这个问题?
  • 是否可以在Azure上修复或扩展某些部署后脚本以添加data[1]命令?
  • 或者手动安装它们哪个不好?
  • 或者还有其他方法可以在没有git的情况下部署?
  

P.S。想一想提出的解   Git push to azure websites with submodule不能用作Git Azure   由于某种原因删除模块。

3 个答案:

答案 0 :(得分:0)

看起来它在加载模块时遇到了问题。默认情况下,Azure Web Apps的部署任务使用npm install --production命令在package.json中安装依赖项,这将跳过devDependencies部分中配置的所有依赖项。因此,请确保将dotenv-extended放在dependencies

答案 1 :(得分:0)

似乎某些Azure问题使用kudusync npm 模块进行repositorywwwroot同步并且工作方式错误。以下序列帮助我解决了这个问题:

  • 转到Azure中的Kudu
  • 在那里打开Debug Console -> CMD
  • 执行:
    • cd D:\home\site\repository>
    • npm udpate
    • cd D:\home\site\wwwroot>
    • npm udpate 出于某种原因,Azure脚本仅在第一次部署时在repository目录中安装npm模块,并且不进一步更新。以上命令允许同步repositorywwwroot目录,并阻止从repository中删除wwwroot中不存在的包。但是需要在每个添加的包中执行此操作。

完成上述所有工作后现在正常工作。人员suggest提交package-lock.json,但此解决方案对我没有帮助:Azure部署脚本从D:\home\site\repository>卸载D:\home\site\wwwroot>中不存在的模块,我收到上述错误。

答案 2 :(得分:0)

  

注意。下面提到的自定义部署脚本方法会覆盖Azure默认方法和未复制到wwwroot的源。需要另一个   或更详细的解决方案。

根据Custom Deployment Script将一个文件添加到我的git存储库的根目录,其名称为.deployment,内容为:

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

现在工作会增加部署时间,如果添加了另一个模块,则会看到更多。