【问题标题】:no-use-before-define has no effect when extending eslint-config-react-app扩展 eslint-config-react-app 时 no-use-before-define 无效
【发布时间】:2021-05-04 14:48:53
【问题描述】:

我正在尝试将 eslint 配置为使用 eslint-config-react-app 作为基础,并在此基础上指定一些特定规则。其中一个规则是no-use-before-define,我在下面的简单示例中尝试了这一点,以检查规则是否按预期工作:

const a = () => {
    b();
};
const b = () => {};
a();

如果我像这样设置我的 .eslintrc.json,那么规则会按预期工作:

{
    "parserOptions": {
        "ecmaVersion": 2020
    },
    "rules": {
        "no-use-before-define": "error"
    }
}
2:5  error  'b' was used before it was defined  no-use-before-define

但是,如果我包含"extends": "react-app",则不会发现任何 eslint 错误:

{
    "extends": "react-app",
    "parserOptions": {
        "ecmaVersion": 2020
    },
    "rules": {
        "no-use-before-define": "error"
    }
}

如果我故意引入会导致另一个违反 eslint 的更改 - 例如删除 a(); 一个结尾,然后 that 被发现,但不是 no-use-before-define 违规:

  1:7  warning  'a' is assigned a value but never used  no-unused-vars

直观地说,我希望 .eslintrc.json 中的任何规则"extends" 中指示的配置之上应用,但似乎情况并非如此。

我在这里误解了什么?有没有办法扩展eslint-config-react-app 并且no-use-before-define 规则正常工作?

【问题讨论】:

标签: javascript eslint


【解决方案1】:

看来我已经想通了。

似乎我覆盖了规则的严重性,但没有覆盖设置为{ "functions": false, "variables": false, "classes": false }的选项,无论严重性如何,基本上都会使规则无效。

明确指定选项会产生所需的行为:

"no-use-before-define": ["error", { "functions": true, "variables": true }]

看起来这也适用于恢复此规则的 eslint 默认选项:

"no-use-before-define": ["error", {}]

【讨论】:

    猜你喜欢
    • 2021-12-30
    • 2021-06-25
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 2020-08-01
    • 2020-03-23
    • 2022-01-07
    • 2018-04-16
    相关资源
    最近更新 更多