4

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 がスタックトレースを返すのはなぜですか? デフォルトの動作はクラッシュするだけで、サーバー上の情報がクライアントに漏洩しないと思いました。

4

1 に答える 1