从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
时,即使我先前手动安装了它,也会再次删除。
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);
? data[1]
命令? P.S。想一想提出的解 Git push to azure websites with submodule不能用作Git Azure 由于某种原因删除模块。
答案 0 :(得分:0)
看起来它在加载模块时遇到了问题。默认情况下,Azure Web Apps的部署任务使用npm install --production
命令在package.json中安装依赖项,这将跳过devDependencies
部分中配置的所有依赖项。因此,请确保将dotenv-extended
放在dependencies
。
答案 1 :(得分:0)
似乎某些Azure问题使用kudusync
npm 模块进行repository
和wwwroot
同步并且工作方式错误。以下序列帮助我解决了这个问题:
Kudu
,Debug Console -> CMD
D:\home\site\repository>
npm udpate
D:\home\site\wwwroot>
npm udpate
出于某种原因,Azure脚本仅在第一次部署时在repository
目录中安装npm模块,并且不进一步更新。以上命令允许同步repository
和wwwroot
目录,并阻止从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
现在工作会增加部署时间,如果添加了另一个模块,则会看到更多。