【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
こちらを参考にさせていただきました
以上です