node.js - NodeJS 终止错误的差异

标签 node.js npm error-handling

我有一个 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 Node::Abort() [/opt/bitnami/nodejs/bin/.node.bin]
2:0x9ef217 [/opt/bitnami/nodejs/bin/.node.bin]
3: 0x9bd657 Node::ResetStdio() [/opt/bitnami/nodejs/bin/.node.bin]
4: 0x9bd6c0 Node::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 Node::NodeMainInstance::Run() [/opt/bitnami/nodejs/bin/.node.bin]
10: 0x9c1cc8 Node::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 Node::Abort() [npm]
2:0x9ef217 [npm]
3: 0x9bd657 Node::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 服务器的最佳方法是什么?

最佳答案

不要杀死服务器(因为它可能会离开绑定(bind)
关闭服务器的最佳方法是实现一种正常关闭服务器的机制。
例如,您可以通过捕获 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 感兴趣

关于node.js - NodeJS 终止错误的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65355026/

相关文章:

javascript - 检查 localStorage 是否可用

java - 并发修改异常迭代

node.js - 找不到本地 Npm 模块 "GRUNT-PLUGIN-MODULE"。安装了吗?这是什么原因造成的?

node.js - iisnode 托管的 Web 应用程序能否计算出托管它的虚拟路径?

javascript - 如何为嵌入制作随机颜色 Discord.js

angularjs - 我们是否应该将 package.json、bower.json、gulpfile.js 推送到生产服务器

python - 这个简单的If语句向我发送了SyntaxError : invalid syntax on Python 3.6

javascript - JSON.stringify 不适用于循环 JSON 对象。该怎么办?

javascript - 在浏览器中从不同存储库加载捆绑文件

mysql - Sequelize从belongsTo关系中获取值