如果需要,我可以发布我的整个配置和 JavaScript 文件,但我正在尝试在我正在编写的一些 JavaScript 上运行 ESLint。 我的“eslintrc.json”文件在配置中有这样的配置(还有一些其他规则):
"rules":
{
// Thought this was my issue and hoped it would solve it.
"env":
{
"es6": true
},
"prefer-template": "error", //template literals
"quotes":
[
"error",
"double",
{ "avoidEscape": true, "allowTemplateLiterals": true }
]
}
这是在 ESLint 的 .log 文件中出现的错误代码,以及失败的代码。
Parsing error: Unexpected character '`' FolderName\FileName.js:31:17
function Something()
{
// Seperated to try and debug the issue.
var message = `Starting Something: ${ arguments.callee.name}`;
// ^
Log.Message(message);
SomeOtherFile.UpdateEnvironmentVariables();
}
我知道默认情况下 ESLint 使用 ECMAScript 5 ( Specifying Parser Options ),因此我尝试将其设置为 ECMA 6(具有模板字符串 - 请参阅上面的配置文件),但这似乎没有帮助。
奇怪的是,ESLint 文档 ( rule : quotes ) 解释了反引号并提到它仅在 ECMAScript 6 等中存在。但 ESLint 使用的解析器 ( Espree - On ESLint ) 似乎有一个问题或其他事情。
我真的不想遍历所有这些并用一些字符串连接替换所有这些,有什么建议吗?
最佳答案
您的代码lints as written on eslint.org/demo当设置 ECMA 版本 2015 时。好吧,确实有错误,但它们不是模板文字用法。
这告诉我,您遇到了解析错误,而不是linting错误,需要设置解析器设置。
ECMA 版本设置为 5 时解析错误
解析正常,当 ECMA 为 2015 时出现 LINTING 错误
解决方案
要解决此问题,我认为您必须在某处提供一个 .eslintrc 文件,将解析器选项设置为 es2015 或更高版本。
仔细检查并尝试更改您的内容以包含以下内容:
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "script",
"ecmaFeatures": {}
}
因此,即使您的文件顶部包含注释...
/*eslint-env es6 */
...解析器选项将胜出并杀死模板文字。而且,正如您所显示的,您的错误是解析错误,而不是 linting 错误:
解析错误:意外字符“`”FolderName\FileName.js:31:17
我承认这是一个非常令人困惑的区别。直到我在这个答案上敲了一段时间才弄清楚,但这解释了为什么我的文件中的环境设置似乎并不总是“采取”;解析器选项会覆盖它们。
关于javascript - 使用 ESLint 在模板字符串上出现解析错误,但我的配置文件中有 ECMA 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55269837/