javascript - 使用 ESLint 在模板字符串上出现解析错误,但我的配置文件中有 ECMA 6

标签 javascript ecmascript-6 eslint backticks template-strings

如果需要,我可以发布我的整个配置和 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 时解析错误

parsing error when ECMA Version set to 5


解析正常,当 ECMA 为 2015 时出现 LINTING 错误

Parse is fine and you have LINTING errors when ECMA is 2015


解决方案

要解决此问题,我认为您必须在某处提供一个 .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/

相关文章:

javascript - 如何使用 jQuery 更改 CSS?

javascript - 如何与 javascript 传播运算符中的嵌套键合并?

javascript - 使用递归、继承和封装时如何在 JavaScript 中保留正确的 `this` 上下文

javascript - React useEffect 提示即使在解构之后也缺少依赖项

javascript - CRA 和捆绑加载程序

javascript - 使用 TypeScript 在 React 组件之外调度 Redux Thunk 操作

javascript - 将按钮绑定(bind)到根据文本框中值的大小激活的多个文本框

JavaScript 正则表达式 : clear the CSV

javascript - 为什么我的 JavaScript 函数不会结束?

javascript - 根据 ESLint,Switch 语句默认返回 "Unreachable"