于使用eslint很多人应该都遇到过格式化工具冲突的问题,复制错误信息到网上找,大部分信息都在告诉你如何安装并使用一个预处理插件。然而试了无数方法,始终无法解决问题。
我也是在被这个问题折磨的欲生欲死之后,问了公司老大哥才知道是由于格式化规则和eslint检查规则有冲突,才导致构建报错,实际代码是可以运行的。
解决这个问题,可以有三种方法。
第一种是修改格式化工具的配置,当然这种方法个人感觉是最蠢的,因为大部分人不会花太多精力去研究格式化工具的配置。
第二种方法则是禁用eslint的检查规则(在eslint配置文件的rules选项中禁用,具体方法可以在网上搜索),目前我在项目中遇到最多的就是单引号双引号冲突,函数体结尾分号冲突,以及函数名和括号之间存在空格的冲突问题,关于冲突很容易通过禁用eslint检查规则来实现,在文末我将贴出在网上找到的一些禁用规则。当然,现在很多规则也被移除了,比如说我所遇到的函数名和括号之间存在空格问题,所以在使用这些规则之前需要明确eslint版本。
第三种我觉得是写项目是最高效的,使用插件来同步格式化工具和eslint的规则,就比如说prettier代码格式化工具就可以使用eslint-config-prettier插件来同步规则,置于其他插件可以在网上搜索。
如果想要查看完整的eslint规则,可以到官网中查看(https://cn.eslint.org/docs/rules/)
for-direction
强制 “for” 循环中更新子句的计数器朝着正确的方向移动
getter-return
强制 getter 函数中出现 return 语句
no-async-promise-executor
禁止使用异步函数作为 Promise executor
no-await-in-loop
禁止在循环中出现 await
no-compare-neg-zero
禁止与 -0 进行比较
no-cond-assign
禁止条件表达式中出现赋值操作符
no-console
禁用 console
no-constant-condition
禁止在条件中使用常量表达式
no-control-regex
禁止在正则表达式中使用控制字符
no-debugger
禁用 debugger
no-dupe-args
禁止 function 定义中出现重名参数
no-dupe-keys
禁止对象字面量中出现重复的 key
no-duplicate-case
禁止出现重复的 case 标签
no-empty
禁止出现空语句块
no-empty-character-class
禁止在正则表达式中使用空字符集
no-ex-assign
禁止对 catch 子句的参数重新赋值
no-extra-boolean-cast
禁止不必要的布尔转换
no-extra-parens
禁止不必要的括号
no-extra-semi
禁止不必要的分号
no-func-assign
禁止对 function 声明重新赋值
no-inner-declarations
禁止在嵌套的块中出现变量声明或 function 声明
no-invalid-regexp
禁止 RegExp 构造函数中存在无效的正则表达式字符串
no-irregular-whitespace
禁止不规则的空白
no-misleading-character-class
不允许在字符类语法中出现由多个代码点组成的字符
no-obj-calls
禁止把全局对象作为函数调用
no-prototype-builtins
禁止直接调用 Object.prototypes 的内置属性
no-regex-spaces
禁止正则表达式字面量中出现多个空格
no-sparse-arrays
禁用稀疏数组
no-template-curly-in-string
禁止在常规字符串中出现模板字面量占位符语法
no-unexpected-multiline
禁止出现令人困惑的多行表达式
no-unreachable
禁止在 return、throw、continue 和 break 语句之后出现不可达代码
no-unsafe-finally
禁止在 finally 语句块中出现控制流语句
no-unsafe-negation
禁止对关系运算符的左操作数使用否定操作符
require-atomic-updates
禁止由于 await 或 yield的使用而可能导致出现竞态条件的赋值
use-isnan
要求使用 isNaN() 检查 NaN
valid-typeof
强制 typeof 表达式与有效的字符串进行比较