扩展 eslint-config-react-app 时 no-use-before-define 无效

Posted

技术标签:

【中文标题】扩展 eslint-config-react-app 时 no-use-before-define 无效【英文标题】:no-use-before-define has no effect when extending eslint-config-react-app 【发布时间】: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 规则正常工作?

【问题讨论】:

可能是重复的***.com/a/65159131/2837427 还要检查版本***.com/a/64311559/2837427 谢谢,但这不是我遇到的问题。我的问题是当我希望看到一个错误时缺少。我也没有使用@typescript-eslint afaik。 @typescript-eslint 存在于 peerDependencies 虽然github.com/facebook/create-react-app/blob/master/packages/… 也适用于no-use-before-define github.com/facebook/create-react-app/issues/7325 @hendrixchord 那个 github 问题和我的不一样(正好相反),但它确实给了我解决这个问题所需的提示,所以谢谢。 【参考方案1】:

看来我已经想通了。

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

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

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

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

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

【讨论】:

以上是关于扩展 eslint-config-react-app 时 no-use-before-define 无效的主要内容,如果未能解决你的问题,请参考以下文章

GroovyGroovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )

003-正则的扩展数值的扩展函数的扩展数组的扩展对象的扩展

GroovyGroovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )

GroovyGroovy 扩展方法 ( 静态扩展方法配置 | 扩展方法示例 | 编译静态扩展类 | 打包静态扩展类字节码到 jar 包中 | 测试使用 Thread 静态扩展类 )

Kotlin扩展函数 ③ ( 定义扩展文件 | 重命名扩展函数 | Kotlin 标准库扩展函数 )

Kotlin扩展函数 ② ( 扩展属性 | 为可空类型定义扩展函数 | 使用 infix 关键字修饰单个参数扩展函数的简略写法 )