【问题标题】:pm2 start app.js is exiting after 15 restartspm2 start app.js 在 15 次重启后退出
【发布时间】:2019-12-28 20:35:38
【问题描述】:

npm start 会很好地启动我的应用程序,但是当我这样做时:

pm2 start app.js

我明白了:

[PM2] Spawning PM2 daemon
[PM2] PM2 Successfully daemonized
[PM2] Process app.js launched
┌──────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────────────┬──────────┐
│ App name │ id │ mode │ pid  │ status │ restart │ uptime │ memory      │ watching │
├──────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────────────┼──────────┤
│ app      │ 0  │ fork │ 4681 │ online │ 0       │ 0s     │ 11.508 MB   │ disabled │
└──────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────────────┴──────────┘
 Use `pm2 show <id|name>` to get more details about an app

在我得到的日志中:

[PM2] Starting streaming logs for [all] process
PM2: 2015-06-04 17:12:37: App name:app id:0 exited with code 0
PM2: 2015-06-04 17:12:37: Starting execution sequence in -fork mode- for app name:app id:0
PM2: 2015-06-04 17:12:37: App name:app id:0 online
PM2: 2015-06-04 17:12:37: App name:app id:0 exited with code 0
PM2: 2015-06-04 17:12:37: Starting execution sequence in -fork mode- for app name:app id:0
PM2: 2015-06-04 17:12:37: App name:app id:0 online
PM2: 2015-06-04 17:12:37: App name:app id:0 exited with code 0
PM2: 2015-06-04 17:12:37: Starting execution sequence in -fork mode- for app name:app id:0
PM2: 2015-06-04 17:12:37: App name:app id:0 online
PM2: 2015-06-04 17:12:38: App name:app id:0 exited with code 0
PM2: 2015-06-04 17:12:38: Starting execution sequence in -fork mode- for app name:app id:0
PM2: 2015-06-04 17:12:38: App name:app id:0 online
PM2: 2015-06-04 17:12:38: App name:app id:0 exited with code 0
PM2: 2015-06-04 17:12:38: Starting execution sequence in -fork mode- for app name:app id:0
PM2: 2015-06-04 17:12:38: App name:app id:0 online
PM2: 2015-06-04 17:12:39: App name:app id:0 exited with code 0
PM2: 2015-06-04 17:12:39: Starting execution sequence in -fork mode- for app name:app id:0
PM2: 2015-06-04 17:12:39: App name:app id:0 online
PM2: 2015-06-04 17:12:39: App name:app id:0 exited with code 0
PM2: 2015-06-04 17:12:39: Script /home/user/app/app.js had too many unstable restarts (15). Stopped. "errored"

这是我的 package.json:

  1 {
  2   "name": "app",
  3   "version": "0.0.0",
  4   "private": true,
  5   "scripts": {
  6     "start": "node ./bin/www"
  7   },
  8   "dependencies": {
  9     "body-parser": "~1.12.4",
 10     "cookie-parser": "~1.3.5",
 11     "debug": "~2.2.0",
 12     "express": "~4.12.4",
 13     "jade": "~1.9.2",
 14     "morgan": "~1.5.3",
 15     "serve-favicon": "~2.2.1",
 16     "stylus": "0.42.3"
 17   }
 18 }

节点版本:v0.10.38 pm2 版本:0.12.15

我该如何调试呢?我不知道为什么它失败了,还有其他地方我需要检查吗?我的 app.js 文件?

【问题讨论】:

    标签: node.js express pm2


    【解决方案1】:

    首先,我会尝试 node ./bin/www 并确保它正常工作。

    我不确定解决这个问题的“官方”方法是什么,但这应该可行:
    您可以将未捕获的异常处理程序放入您的代码中,该处理程序只是写入文件或执行其他操作。

    process.on('uncaughtException', function(err) {
        console.log('Caught exception: ' + err);
        throw err;
    });
    

    编辑: 根据您的评论,您遇到问题的原因是 app.js 不是您应用程序的真正入口点。真正的切入点是./bin/www

    所以你需要告诉 PM2 启动那个文件,而不是像这样app.js
    pm2 start ./bin/www

    【讨论】:

    • 所以 node app.js 什么都不做 -- 参考stackoverflow.com/questions/22215592/…
    • 我刚刚更新了我的答案。 npm startnode app.js 启动两个不同的文件。这就是为什么node app.js 似乎什么都不做的原因。相反,您可以使用node ./bin/www,它应该以与npm start 相同的方式开始。
    • 我不认为这是答案。开箱即用的 pm2 start ./bin/www 也会重启 15 次然后死掉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 2015-03-05
    • 2015-12-22
    • 2015-12-22
    相关资源
    最近更新 更多