Skip to content
← Back to rules

eslint/prefer-promise-reject-errors Style

它的作用

要求将 Error 对象用作 Promise 的拒绝原因。

为什么这不好?

对于 Promise 中用户定义的错误,通常认为最佳实践是仅将内置 Error 对象的实例传递给 reject() 函数。Error 对象会自动 存储堆栈跟踪,可用于通过确定错误来源来调试错误。如果 Promise 以非 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()

如何使用

To enable this rule using the config file or in the CLI, you can use:

json
{
  "rules": {
    "prefer-promise-reject-errors": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  rules: {
    "prefer-promise-reject-errors": "error",
  },
});
bash
oxlint --deny prefer-promise-reject-errors

版本

此规则新增于 v0.15.7。

参考资料