Skip to content
← Back to rules

eslint/prefer-promise-reject-errors スタイル

何を行うか

プロミスのリジェクト理由として Error オブジェクトを使用することを要求します。

なぜ問題か

プロミス内でユーザー定義のエラーを扱う際、reject() 関数に組み込みの Error オブジェクトのインスタンスのみを渡すことが良い実践とされています。Error オブジェクトはスタックトレースを自動的に格納するため、エラーの発生元を特定することでデバッグが可能になります。もし非 Error 値でプロミスがリジェクトされた場合、リジェクトの発生場所を特定することが困難になることがあります。

このルールに関して不正なコードの例:

js
Promise.reject("something bad happened");

Promise.reject(5);

Promise.reject();

new Promise(function (resolve, reject) {
  reject("something bad happened");
});

new Promise(function (resolve, reject) {
  reject();
});

このルールに関して正しいコードの例:

js
Promise.reject(new Error("something bad happened"));

Promise.reject(new TypeError("something bad happened"));

new Promise(function (resolve, reject) {
  reject(new Error("something bad happened"));
});

var foo = getUnknownValue();
Promise.reject(foo);

設定

このルールは以下のプロパティを持つ設定オブジェクトを受け入れます:

allowEmptyReject

type: boolean

default: false

引数なしで Promise.reject() を呼び出すことを許可するかどうか。

使用方法

このルールを設定ファイルまたは CLI で有効化するには、次のように使用できます:

json
{
  "rules": {
    "prefer-promise-reject-errors": "error"
  }
}
bash
oxlint --deny prefer-promise-reject-errors

参照