Deployed NodeJS application to Azure from VS Code like mentioned here: Deploy NodeJS app to Azure from VS Code successfully - first initial commit:
$ git push azure master
...
remote: Updating branch 'master'.
remote: Updating submodules.
...
Then added dotenv-extended
module to app.js
:
require('dotenv-extended').load();
npm added "dotenv-extended": "^2.0.1"
to package.json
file. After that committed, pushed to github, then pushed to azure same way like above.
However in 2nd time Azure did not perform submodules update and dotenv-extended
was not installed on Azure in /node_modules/*
which is added to .gitignore
on my side. This caused application exception so forced to go to azure and run npm install dotenv-extended
or npm update
manually.
In 3rd time deployment Azure printed:
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.
and when I checked dotenv-extended
was erased again even if I installed it manually previously.
- Why did this happen, why azure did not run
remote: Updating submodules
in second time? - How to fix this if I need to add some modules later?
- Is it possible to fix or extend some post-deployment script on Azure to add
npm update
command? - Or install them manually which is not good?
- Or there is another way to deploy without git?
P.S. Think proposed solution Git push to azure websites with submodule will not work as Git Azure erases modules for some reason.
Seems some Azure issue it uses
kudusync
npm module forrepository
andwwwroot
synchronizations and works wrong way. Following sequence helped me to solve the issue:Kudu
in Azure,Debug Console -> CMD
thereD:\home\site\repository>
npm udpate
D:\home\site\wwwroot>
npm udpate
For some reason Azure script install npm modules inrepository
dir only on first deployment, and do not update it further. Above commands allow to synchronizerepository
andwwwroot
directories and prevent removing packages not present inrepository
fromwwwroot
. However need to do this on every added package.Works fine now after all of above. People suggest to commit
package-lock.json
, however this solution had not helped me: Azure deployment script uninstalls modules not present inD:\home\site\repository>
fromD:\home\site\wwwroot>
and I get above error.It looks like it's having trouble loading modules. By default, Azure Web Apps’ deployment task uses
npm install --production
command to install the dependencies in your package.json, which will skip all the dependencies configured indevDependencies
section. So please make suredotenv-extended
is placed independencies
.According to Custom Deployment Script added a file to the root of my git repository with the name
.deployment
and the content:Works for now however increases deployment time, will see more if another module added.