node.jsをエラーで終了しないようにする
2023-09-22 06:15:07
質問
私は、Socket.IO を使用した Web ソケット指向の node.js サーバーに取り組んでいます。私は、特定のブラウザがサーバーへの正しい接続手順に従わず、コードがそれを優雅に扱うように書かれていないバグに気づきました。要するに、設定されていないオブジェクトにメソッドを呼び出し、その結果、エラーによってサーバーが停止します。
私の懸念は、特にバグについてではなく、そのようなエラーが発生すると、サーバー全体がダウンしてしまうという事実なのです。エラーが発生した場合、単にメッセージを記録し、おそらくイベントを終了しますが、サーバー プロセスは実行し続けるようにするために、node のグローバル レベルで何かできることはないでしょうか。
私は、大規模な含まれたコードベース内の捕捉されないエラーを悪用する 1 人の賢いユーザーのために、他のユーザーの接続をダウンさせたくありません。
どのように解決するのですか?
リスナーを
uncaughtException
イベントにリスナーを追加できます。
実際の Node.js API リファレンス (から取得したコードです。)
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
関連
-
[解決済み] npm install エラー - ローカルの発行者証明書を取得できません。
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] Node.jsでファイルを書き込む
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] Node.jsで環境変数を読み込む
-
[解決済み] Node.jsでファイル/ディレクトリが存在するかどうかを同期的にチェックする
-
[解決済み] Node.jsのnpmモジュールをアンインストールするにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】Discord.js が特定のチャンネルにメッセージを送信する場合
-
[解決済み】MongoClient v3.0使用時、db.collectionは関数ではない
-
[解決済み] MongoClient v3.0使用時、db.collectionが関数でない
-
[解決済み] TypeError: コールバックはnodejsの関数ではありません。
-
[解決済み] ExpressJS : res.redirect()が期待通りに動作しない?
-
[解決済み] TypeErrorです。リクエストパスにエスケープされていない文字が含まれています。
-
[解決済み] ランタイム 'node' が PATH で見つからない - Visual Studio Code と Node.js
-
[解決済み] エラーです。Expressでビューの検索に失敗しました
-
[解決済み] Macでポート3000をロックしているプロセスを見つける(そして殺す)【終了