ここで説明するように、Expressでカスタムエラーページを使用しています。
しかし、それを行うと、エラーメッセージしか表示されません。デフォルトのExpressエラーハンドラー(スタックトレースなど)に表示されるのと同じ情報を取得したいので、次のことができます。
- それをコンソールに記録します(これをデフォルトのままにしておけば幸いです)。
- エラーページに表示しますが、ローカルホストの場合のみです。
どうすればよいですか?
これは@generalhenryの回答からの修正版です。スタックトレースにアクセスしerr.stack
て、「500」ビューに渡し、いくつかの凝ったcssスタイルを実行できます。
app.use(function(err, req, res, next) {
if (err instanceof NotFound) {
res.render('errors/404');
} else {
res.render('errors/500', {error: err, stack: err.stack});
}
});
function NotFound() {
this.name = "NotFound";
Error.call(this, msg);
Error.captureStackTrace(this, arguments.callee);
}
// below all route handlers
// If all fails, hit em with the 404
app.all('*', function(req, res){
throw new NotFound;
});
ミドルウェアに提供されたエラーを使用するだけです
// Handle 500
app.use(function(error, req, res, next) {
console.error(error);
if (ISLOCALHOST()) {
res.json(error, 500);
} else {
res.send('500: Internal Server Error', 500);
}
});