node.js - 使 node.js 不退出错误

标签 node.js

我正在使用 Socket.IO 开发面向 websocket 的 node.js 服务器。我注意到一个错误,其中某些浏览器没有遵循正确的服务器连接过程,并且没有编写代码来优雅地处理它,简而言之,它调用一个从未设置的对象的方法,从而杀死服务器出错了。

我关心的不是特别的错误,而是当发生此类错误时,整个服务器都会关闭。我可以在 Node 的全局级别上做些什么来做到这一点,所以如果发生错误,它只会记录一条消息,也许会终止事件,但服务器进程将继续运行?

我不希望其他用户的连接因一位聪明的用户利用包含的大型代码库中 Uncaught Error 而中断。

最佳答案

您可以将监听器附加到流程对象的 uncaughtException 事件。

代码取自实际 Node.js API reference (它是“进程”下的第二项):

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

setTimeout(function () {
  console.log('This will still run.');
}, 500);

// Intentionally cause an exception, but don't catch it.
nonexistentFunc();
console.log('This will not run.');

你现在要做的就是记录它或用它做点什么,如果你知道在什么情况下会发生错误,你应该在 Socket.IO 的 GitHub 页面上提交一个错误:
https://github.com/LearnBoost/Socket.IO-node/issues

关于node.js - 使 node.js 不退出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4213351/

相关文章:

javascript - 发送表单数据到 Node 服务器

javascript - 两个 Node.JS 脚本读取/写入单个 .JSON 文件,但第一个脚本无法修改该文件

node.js - 如何从被 grunt-contrib-watch 杀死的进程中释放资源?

javascript - Node.js 回调传递到 server.on()

node.js - nodejs请求模块解析body

node.js - Node/Express 服务镜像(如果存在);缓存问题

javascript - 事件断开连接

node.js - 为什么docker容器消耗大量内存?

node.js - Docker - 构建失败,操作系统不受支持,命令 '/bin/sh -c npm install' 返回非零代码

node.js - Polymer CLI 安装在 gecko 驱动程序处挂起