的NodeJS应用程序部署问题
: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-extended
或npm 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 由于某种原因会擦除模块。
似乎有些Azure中的问题,它使用kudusync
NPM模块repository
和wwwroot
同步和工作走错了路。以下顺序帮我解决这个问题:
- 转到Azure中
Kudu
, - 打开
Debug Console -> CMD
有 - 执行:
- CD
D:\home\site\repository>
npm udpate
- CD
D:\home\site\wwwroot>
-
npm udpate
由于某些原因,Azure脚本仅在第一次部署时才在repository
dir中安装npm模块,并且不要进一步更新。以上命令允许同步repository
和wwwroot
目录,并防止从wwwroot
中删除不存在于repository
中的软件包。但是需要在每个添加的软件包上执行此操作。
- CD
现在工作正常后,所有以上。人suggest承诺package-lock.json
,但是这个解决方案没有帮助我:Azure部署脚本从D:\home\site\wwwroot>
卸载不存在于D:\home\site\repository>
中的模块,并且出现以上错误。
该解决方案现在可用。 –
它看起来像加载模块时出现问题。默认情况下,Azure Web Apps的部署任务使用npm install --production
命令在您的package.json中安装依赖项,这将跳过在devDependencies
部分中配置的所有依赖项。所以请确保dotenv-extended
被放置在dependencies
。
模块在'dependencies'中,'devDependencies'在我这边是空的。其他解决方案? –
您可以设置[自定义部署脚本](https://github.com/projectkudu/kudu/wiki/Custom-Deployment-Script),以便为您的应用程序添加'npm update'命令。请参阅[使用Git部署的Microsoft Azure Web App(网站)自定义部署脚本](http://blog.amitapple.com/post/38417491924/azurewebsitecustomdeploymentpart1/#.WZOjJFEjGUl)。 –
自定义部署脚本方法会覆盖未复制到'wwwroot'的Azure默认方法和源。需要另一个或更多详细的解决 –
注意。下面提到的自定义部署脚本方法会覆盖未复制到
wwwroot
的Azure默认方法和源。需要另一个 或更详细的解决方案。
根据Custom Deployment Script添加文件到我的git仓库的根目录与名称.deployment
和内容:
[config]
command = cd %DEPLOYMENT_TARGET% && echo "npm update ..." && npm update --quiet
工程现在却增加了部署的时间,会看看其他模块添加更多。
https://stackoverflow.com/questions/11939728/git-push-to-azure-websites-with-submodule –
@YeLwinSoe感谢您的链接,但有些不太清楚:请你解释这个更详细 - 请问需要做?将'/ node_modules/*'作为子模块添加到主repo中?但我不想在github上提交它。 –