【node.js】expressでエラー処理を実装する方法
はじめに
expressでの開発で必須のエラー処理を実装したので次回やるときのためにまとめておく
やりたいことは以下
・エラーが発生したらエラー内容をログ出力
・ユーザーにはエラーページを表示
・エラーでサーバーが落ちないように
実装
サーバー本体の実装はこんなかんじでいけました
app.js
// Node.js各種モジュール読み込み var app = require("express")(); var http = require("http").Server(app); var domain = require("domain"); // ★ここがポイント // 500エラー(Node.js) app.use(function(req, res, next) { var reqd = domain.create(); reqd.on("error", function(err) { showServerError(res, err); }); reqd.run(next); }); // アプリごとの実装 app.use("/", require("./controllers/index.js")()); ・・・ // 404エラー app.use(function(req, res, next) { showNotFound(res); }); // 500エラー(ミドルウェア) app.use(function(err, req, res, next) { showServerError(res, err); }); // HTTPサーバー開始 http.listen(config.server.port, function() { console.log("listening on *:" + config.server.port); }); // NotFound処理 var showNotFound = function(res) { res.sender("404"); }; // サーバーエラー処理 var showServerError = function(res, err) { // ログ出力等 res.sender("500"); };
以下をハンドリングできることが確認できたのでとりあえずokかな
・ランタイムエラー
・throw new Error
Node.js (Express) でuncaughtException が起きた時にエラーページを表示する - topspot's blog
こちらを参考にさせていただきました
以上です