【问题标题】:Difference in NodeJS termination errorsNodeJS 终止错误的差异
【发布时间】:2021-03-28 23:44:00
【问题描述】:

我有一个 NodeJS 服务器在我开始的后台运行:

NODE_ENV=production npm start  >> stdout.txt 2>> stderr.txt &

当我重新启动它时:

kill <node process id>; NODE_ENV=production npm start  >> stdout.txt 2>> stderr.txt &

我有时会在日志中看到很长的错误:

/opt/bitnami/nodejs/bin/.node.bin[8878]: ../src/node.cc:663:void node::ResetStdio(): 断言 `(0) == (err)' 失败。 1: 0x9ef190 节点::Abort() [/opt/bitnami/nodejs/bin/.node.bin] 2:0x9ef217 [/opt/bitnami/nodejs/bin/.node.bin] 3: 0x9bd657 节点::ResetStdio() [/opt/bitnami/nodejs/bin/.node.bin] 4: 0x9bd6c0 节点::SignalExit(int) [/opt/bitnami/nodejs/bin/.node.bin] 5:0x7fca6718e390 [/lib/x86_64-linux-gnu/libpthread.so.0] 6:0x7fca66ebaad3 epoll_wait [/lib/x86_64-linux-gnu/libc.so.6] 7:0x13200b0 [/opt/bitnami/nodejs/bin/.node.bin] 8: 0x130e26b uv_run [/opt/bitnami/nodejs/bin/.node.bin] 9: 0xa31ec3 节点::NodeMainInstance::Run() [/opt/bitnami/nodejs/bin/.node.bin] 10: 0x9c1cc8 节点::Start(int, char**) [/opt/bitnami/nodejs/bin/.node.bin] 11: 0x7fca66dd3840 __libc_start_main [/lib/x86_64-linux-gnu/libc.so.6] 12:0x95c085 [/opt/bitnami/nodejs/bin/.node.bin] 中止(核心转储) npm 错误!代码生命周期 npm 错误!错误号 134 npm 错误! App@0.0.1 开始:`node app.js` npm 错误!退出状态 134 npm 错误! npm 错误! App@0.0.1 启动脚本失败。 npm 错误!这可能不是 npm 的问题。上面可能有额外的日志输出。 npm 错误!可以在以下位置找到此运行的完整日志: npm 错误! /home/bitnami/.npm/_logs/2020-12-17T21_05_41_838Z-debug.log npm[8862]: ../src/node.cc:663:void node::ResetStdio(): 断言 `(0) == (err)' 失败。 1: 0x9ef190 节点::Abort() [npm] 2:0x9ef217 [npm] 3: 0x9bd657 节点::ResetStdio() [npm] 4:0x7fd18c8c7008 [/lib/x86_64-linux-gnu/libc.so.6] 5:0x7fd18c8c7055 [/lib/x86_64-linux-gnu/libc.so.6] 6:0x994907 [npm] 7:0xbc9a29 [npm] 8: 0xbcb817 v8::internal::Builtin_HandleApiCall(int, unsigned long*, v8::internal::Isolate*) [npm] 9:0x13a72b9 [npm]

有时我会看到一个简短的错误:

终止 npm 错误!代码生命周期 npm 错误!错误号 143 npm 错误! App@0.0.1 开始:`node app.js` npm 错误!退出状态 143 npm 错误! npm 错误! App@0.0.1 启动脚本失败。 npm 错误!这可能不是 npm 的问题。上面可能有额外的日志输出。 npm 错误!可以在以下位置找到此运行的完整日志: npm 错误! /home/bitnami/.npm/_logs/2020-12-17T21_06_43_530Z-debug.log

两者有什么区别,重启NodeJS服务器的最佳方式是什么?

【问题讨论】:

    标签: node.js npm error-handling


    【解决方案1】:

    不要杀死服务器(因为它可能会离开绑定 关闭服务器的最佳方法是实现一种正常关闭服务器的机制。

    例如,您可以通过捕获SIGINT (or any other signal exposed to a process) 并处理服务器终止来做到这一点。

    在 nodejs 中,您可以通过使用 process.on() 来做到这一点

    process.on("SIGINT", () => {
      console.log("SIGINT received");
    });
    

    发送一个 SIGINT 给进程,做

    kill -s SIGINT <node process id>
    

    你可能也对this thread感兴趣

    【讨论】:

    • 谢谢!这回答了另一个问题:stackoverflow.com/questions/64542392/…
    • 处理短错误但不处理长错误。它可能来自服务器正忙于处理某些请求吗?如果是,如何等待请求栈清空后再终止?
    猜你喜欢
    • 1970-01-01
    • 2013-07-24
    • 2017-12-15
    • 2018-01-21
    • 2011-03-03
    • 2016-10-07
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多