当前位置: 首页 > 面试题库 >

Node.js未处理的“错误”事件

羊舌志
2023-03-14
问题内容

当我的discord bot上网时间过长(大约3-4小时)时,会随机出现此错误,但有时该错误发生得更早,有时又更晚。真的很困扰我

  events.js:188
      throw err;
      ^

Error: Unhandled "error" event. ([object Object])
    at Client.emit (events.js:186:19)
    at WebSocketConnection.onError (D:\BasementMonster\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:374:17)
    at WebSocket.onError (D:\BasementMonster\node_modules\ws\lib\event-target.js:128:16)
    at emitOne (events.js:116:13)
    at WebSocket.emit (events.js:211:7)
    at _receiver.cleanup (D:\BasementMonster\node_modules\ws\lib\websocket.js:211:14)
    at Receiver.cleanup (D:\BasementMonster\node_modules\ws\lib\receiver.js:557:13)
    at WebSocket.finalize (D:\BasementMonster\node_modules\ws\lib\websocket.js:206:20)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)

问题答案:

我在自己的代码中为这个问题努力了一段时间。主要问题是跟踪是完全无用的, 并且
错误很少发生,以至于使“在终端中运行并等待”是徒劳的任务。最终,我能够弄清楚Discord.js客户端本身正在引发错误-
在我阅读的任何文档中都没有提到此错误,因此我没有针对它的处理程序-并且由于这种糟糕的情况发生在Discord.js包本身,在我的代码中没有行可以指向跟踪。

需要在某处代码中存在的东西类似于

client.on('error', (err) => {
   console.log(err.message)
});

当然,无论您的Client对象是什么,以及您希望错误处理的内容如何,​​都可以对其进行调整。据我所知,此特定跟踪来自丢失的互联网连接,这是我想要记录的内容,因此我代替了console.log()调用了自己的自定义函数,该事件将事件写到日志文件中带有时间戳。

通过运行bot实例并终止我的Internet连接进行测试,结果表明,不仅日志记录功能有效,而且Discord.js在它回来后会自动恢复该会话。(你的旅费可能会改变。)



 类似资料:
  • 我是Node.js新手,希望使用streams运行程序。对于其他程序,我必须同时启动一台服务器(mongodb、redis等),但我不知道是否应该用它运行一台服务器。请让我知道哪里出了问题,以及如何纠正。提前谢谢。 这是程序: 这是cmd输出:

  • 在微软的botframework上玩,当我尝试运行app.js文件,这是bot的主文件,第一次很好,当我关闭bot模拟器和所有程序,再次运行app.js后,弹出这个错误消息

  • 我非常肯定,在我的代码中,唯一可能抛出此错误的地方(基于端口号)是下面的代码。 我尝试删除语句,但没有改变结果。当该操作运行时,如果端口已经被进程绑定,我会得到以下错误,我希望捕获并报告该错误,而不会导致进程退出。

  • 问题内容: 我已经阅读了一些在node.js中使用mysql的示例,并且对错误处理有疑问。 大多数示例都进行如下错误处理(为简便起见): 每次发生sql错误时,这都会导致服务器崩溃。我想避免这种情况并保持服务器运行。 我的代码是这样的: 我不确定这是否是处理它的最佳方法。我也想知道查询的块中是否应该有一个。否则,连接可能会保持打开状态并随着时间的推移逐渐建立。 我习惯了Java 或在这里可以“干净

  • 如果 Puppeteer 方法无法执行一个请求,就会抛出一个错误。例如,page.waitForSelector(selector[, options]) 选择器如果在给定的时间范围内无法匹配节点,就会失败。 对于某些类型的错误,Puppeteer 使用特定的错误类处理。这些类可以通过 require('puppeteer/Errors') 获得。 支持的类列表: TimeoutError 一个处

  • 问题内容: 我从事的项目是用gulp构建的。 最近,我将节点版本更新为v6.3.1。然后出了点问题。 名为“ html”的任务将引发错误。这是它的错误代码的一部分。 以及任务“ html”的代码: 我在Google上搜索了很多,但没有找到适合我的正确答案。 问题答案: 删除node_modules文件夹,清除npm缓存的文件,然后重新安装即可解决此问题。 来源:https : //github.c