node.js部署:当;npm安装“;失败

node.js部署:当;npm安装“;失败,node.js,deployment,npm,Node.js,Deployment,Npm,每次通过GitHub webhook进行部署后,我都会通过ssh连接到服务器,检查我的应用程序为什么没有运行。大多数情况下,这是因为npm安装由于奇怪的网络问题而失败 在my package.json中,我目前有以下脚本: "scripts": { "start": "node ./src/server", "test": "gulp test", "deploy": "npm prune && npm install && gulp", "dep

每次通过GitHub webhook进行部署后,我都会通过ssh连接到服务器,检查我的应用程序为什么没有运行。大多数情况下,这是因为
npm安装
由于奇怪的网络问题而失败

在my package.json中,我目前有以下脚本:

"scripts": {
  "start": "node ./src/server",
  "test": "gulp test",
  "deploy": "npm prune && npm install && gulp",
  "deploy-dev": "npm run-script deploy && pm2 startOrRestart ./etc/pm2/development.json"
}
我运行
deploydev
,它运行
deploy
脚本。我想要两个改进:

  • 当上述
    npm安装失败时,如何通过电子邮件通知我?有命令吗
  • 我是否可以在npm安装失败后,以某种方式自动重复一分钟

谢谢你的建议

为什么??为什么不通过日志检查它是否失败,然后你就可以解决这个问题,爱因斯坦说:
疯狂:反复做同样的事情,期待不同的结果
是什么让你认为一分钟后任何事情都会改变?我建议你解决你的网络问题…好问题。首先,我不想在每次部署时手动登录到服务器并检查日志文件。我在这里谈论的是自动化部署。其次,npm的后端有时会出现一些流浪问题。当你想让整个事情变得稳健时,总有一点网络问题的风险是不应该忽视的。有时我也会遇到类似这样奇怪的npm问题,希望通过电子邮件得到通知:
80389;我退出,因为/var/www/videomail/development/node_modules 80390中存在其他条目错误,打开“/home/nodejs/.npm/9765d813-adable-stream-1-0-31-package-tgz.lock”文件存在:/home/nodejs/.npm/9765d813-adable-stream-1-0-31-package-tgz.lock将其移开,然后重试。
Michael,在将项目发送到服务器之前,您是否考虑过安装所有包,这样npm安装就不会失败。我知道你的意思,但那是一种不好的做法。node_模块属于.gitignore,原因很多。