ESLint 报错解决:Parsing error: Unexpected token

在前端开发过程中,我们经常会碰到“Parsing error: Unexpected token”的报错,这是由于代码中出现了不符合语法规范的语句,导致浏览器或 Node.js 无法正确解析。

而在编写代码时使用 ESLint 可以帮助我们规范代码风格,提高代码质量,但有时候也会出现 ESLint 报错的情况,本文将介绍如何解决 ESLint 报错中最常见的一种:Parsing error: Unexpected token。

问题分析

当代码中出现不符合语法规范的语句时,比如不闭合的括号、不正确的变量声明等,就会导致 ESLint 报错“Parsing error: Unexpected token”。

例如以下代码:

const message = 'Hello, world!';

console.log(message);

在运行 ESLint 后可能会出现如下报错:

error Parsing error: Unexpected token

这是由于代码中没有任何问题,ESLint 仍然无法正确解析。

那么如何解决这个问题呢?接下来我们将讨论几种解决方法。

解决方法

1. 检查语法

首先,我们需要检查代码中是否有语法错误,是否缺少括号、分号等符号,是否参数不正确等。

例如以下代码中,变量声明缺少了关键字 var、let 或 const:

message = 'Hello, world!';

console.log(message);

运行 ESLint 后,就会出现“Parsing error: Unexpected token”报错。

因此,我们需要检查代码,并修正错误。

2. 检查 ESLint 配置

如果代码中没有出现语法错误,可以检查一下 ESLint 配置文件是否正确。

在项目根目录下,找到 .eslintrc.json 或 .eslintrc.js 配置文件,检查是否存在如下配置:

{
    "parser": "babel-eslint",
    "parserOptions": {
        "ecmaVersion": 6,
        "sourceType": "module"
    },
    "rules": {}
}

其中,parser 选项是指定解析器,parserOptions.ecmaVersion 是指定语言版本,需要与项目中使用的语法版本保持一致。

3. 修改解析器

如果以上两种方法都没有解决问题,可以尝试修改解析器,切换到支持项目使用的语言版本的解析器。

例如,如果项目中使用了 ES6 语法,可以使用 babel-eslint 解析器:

{
    "parser": "babel-eslint",
    "parserOptions": {
        "ecmaVersion": 6,
        "sourceType": "module"
    },
    "rules": {}
}

如果项目中使用了 Typescript,可以使用 @typescript-eslint/parser 解析器:

{
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
        "ecmaVersion": 6,
        "sourceType": "module"
    },
    "rules": {}
}

终极解决办法

如果以上方法都无法解决问题,我们可以使用更为暴力的方式,关闭 ESLint 对文件的语法检查。

在现有的 ESLint 配置文件中加入如下代码:

{
    "rules": {
        "no-mixed-spaces-and-tabs": 0,
        "no-tabs": 0,
        "no-multiple-empty-lines": 0
    }
}

这样就可以关闭 ESLint 对空格、tab、空行的检查了,同时也会关闭语法检查。不过,这并不是最佳的解决方法,我们需要进一步检查代码是否符合规范。

总结

当 ESLint 报错“Parsing error: Unexpected token”时,首先需要检查代码是否存在语法错误,然后检查 ESLint 配置是否正确,最后可以尝试修改解析器。如果以上方法都无法解决问题,可以使用更为暴力的方式,关闭 ESLint 对语法的检查。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a6eb25add4f0e0fffbc8df


纠错反馈