在尝试使用ESLint验证我的.js文件时,我收到了一个意外的词法声明(无案例声明)错误。
c:\>eslint C:\modules\myFile.js
503:17 error Unexpected lexical declaration in case block no-case-declarations
以下是导致错误的代码
switch (type) {
case String(type.match(/.*test.*/i)):
console.log('test')
break;
default:
console.log('error')
return err;
}
vs-code中没有显示错误。 当我转换我的代码时:
switch (type) {
case String(type.match(/.*test.*/i)):
console.log('test')
break;
/*default:
console.log('error')
return err;*/
}
所有错误消失,所以我认为它必须脱离默认的案例块。
以下是我的esLint.rc:
{
"root": true,
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "script"
},
"env": {
"node": true,
"browser": false
},
"extends": "eslint:recommended",
"rules": {
"semi": ["error", "always"],
"indent": ["error", 4, {
"VariableDeclarator": 2,
"SwitchCase": 1,
"MemberExpression": 1,
"ArrayExpression": "first"
}],
"no-mixed-requires": "off",
"no-restricted-imports": "off",
"no-undef":"off",
"no-console":2,
"no-trailing-spaces": "error",
"no-unused-vars": "warn"
}
}
这可能是什么问题?据我所知,默认的ESLint规则有默认情况规则但不 no-default-enforced 规则。
答案 0 :(得分:3)
这是一个棘手的问题,因为它不是你的想法。默认情况下没有{...}是问题所在。因此更改默认值:默认值:{...}将解决此问题。如果要关闭它,则必须删除eslint中的扩展名。
具体来说,这是由“延伸”:“eslint:recommended”
产生的