bugfix> node.js > 投稿

このエラーは、不協和音ボットを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)

回答 2 件
  • 私は自分のコードでしばらくこの問題に取り組みました。主な問題は、トレースがまったく役に立たないことです。そして エラーがまれにしか発生しないため、「ターミナルで実行して待機」を無駄なタスクにしています。最終的に、Discord.jsクライアント自体がエラーをスローしていることを理解することができました-これは私が読んだどのドキュメントにも記載されていなかったため、ハンドラーがありませんでした-そしてこのoopsieはDiscord.jsパッケージ自体、トレースでポイントするコードには行がありませんでした。

    コードのどこかに存在する必要があるのは、

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

    もちろん、これは、Clientオブジェクトが何であれ、エラー処理が必要なものに合わせて調整されます。 私が知る限り、この特定のトレースはインターネット接続が失われたことに由来するため、記録したいので、console.log()の代わりに、イベントをログファイルに書き込む独自のカスタム関数を呼び出しましたタイムスタンプ付き。

    ボットのインスタンスを実行してインターネット接続を強制終了することでこれをテストすると、ログ機能が機能するだけでなく、Discord.jsがボットのセッションを自動的に復元したことがわかりました。 (あなたのマイレージは異なる場合があります。)

  • 次のようなエラー処理イベントを追加する必要があります: client.on('error', console.error);

あなたの答え