在前端开发过程中,我们经常会碰到“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