扩展 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 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )
GroovyGroovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )
GroovyGroovy 扩展方法 ( 静态扩展方法配置 | 扩展方法示例 | 编译静态扩展类 | 打包静态扩展类字节码到 jar 包中 | 测试使用 Thread 静态扩展类 )
Kotlin扩展函数 ③ ( 定义扩展文件 | 重命名扩展函数 | Kotlin 标准库扩展函数 )
Kotlin扩展函数 ② ( 扩展属性 | 为可空类型定义扩展函数 | 使用 infix 关键字修饰单个参数扩展函数的简略写法 )