HTTP API サーバーでエラー処理を正しく機能させようとしていますが、ノードのエラー処理動作がわかりません。
私は自分のエラーオブジェクトを次のように定義しました:
function ServerError(statusCode, err, message) {
this.status = statusCode;
if (err != undefined) {
this.err = err;
if (message != undefined) {
this.message = message;
}
else {
this.message = err.message || err;
}
}
}
ServerError.prototype = new Error();
ミドルウェアまたはハンドラーのいずれかで、このオブジェクトを次のように使用します。
function forceError() {
return function(req, res, next) {
next(new ServerError(500, "Internal error!"));
}
}
ハンドラーが定義されていない場合、このエラーはコンソールに出力され、応答本文で返されます。これはTypeErrors
、自分のエラーだけでなく、次のような場合にも発生します。スタック トレースとファイル名/パスが含まれているため、これは不適切です。
Express がスタックトレースを返すのはなぜですか? デフォルトの動作はクラッシュするだけで、サーバー上の情報がクライアントに漏洩しないと思いました。