在前端开发中,ESLint 是一个非常强大的工具,它可以帮助我们规范代码的风格和提高代码的质量。但是有时候会遇到 Parsing error: Unexpected token 的报错,这个错误信息并没有给出具体的错误位置和原因,给我们的调试带来了一定的困扰。本文将为大家介绍这个错误的一些常见情况和解决方法。
1. 问题描述
在代码编译过程中,常常会看到如下错误信息:
Parsing error: Unexpected token
这个错误信息并没有给出具体的错误位置和原因,我们只知道代码存在语法错误。但是这个错误是非常常见的,它有很多的可能性和产生原因,下面我们一一探究。
2. 错误原因
2.1 缺少分号
JavaScript 中,分号是一个可选的字符,但是在一些情况下不加分号可能会导致语法错误。比如下面这个例子:
const a = 1 const b = 2 [a, b].forEach(console.log)
上面的代码没有加分号,但是在解析时会自动加上分号,导致代码变成了下面这样:
const a = 1; const b = 2; [a, b].forEach(console.log);
这段代码就不会出现语法错误了。
2.2 使用了不支持的语法
ESLint 根据 ECMAScript 标准来验证代码规范,如果我们使用了不支持的语法,就会出现 Parsing error: Unexpected token 的错误。比如箭头函数是 ES6 中新增的语法:
const add = (a, b) => a + b
如果使用了低版本的浏览器或者 Node.js 环境,就会出现上述的错误。
2.3 错误的变量名
在代码声明变量时,如果使用了不符合命名规范的变量名,会导致出现 Parsing error: Unexpected token 的报错信息:
const 123 = 1 // 错误的变量名
2.4 缺少花括号
在编写代码块时,我们必须加上花括号,否则就会出现错误,如下例子:
if (condition) console.log('hello') // 缺少花括号
需要修改成以下这种形式:
if (condition) { console.log('hello') }
2.5 引号不匹配
在编写字符串时,我们必须使用成对的引号,否则就会出现错误:
const str = 'hello"world' // 引号不匹配
需要修改成以下这种形式:
const str = 'hello"world'
2.6 存在空格
在某些情况下,代码中存在空格也会导致解析错误,比如下面这个例子:
const a = { }
我们必须写成下面这种形式:
const a = {}
3. 解决方案
为了解决上述问题,我们需要做出如下的调整:
3.1 加入分号
在代码结尾处加上分号,确保代码可以正常的解析:
const a = 1; const b = 2; [a, b].forEach(console.log);
3.2 支持语法
可以在 ESLint 配置文件中加入支持 ES6 语法规则,如下所示:
{ "parserOptions": { "ecmaVersion": 6 } }
这里我们指定了支持 ES6 版本的语法。
3.3 修正变量名
在定义变量时,按照规范写出合法的变量名:
const num = 123 // 正确的变量名
3.4 加入花括号
在代码块处加入花括号,确保代码可以正常的解析:
if (condition) { console.log('hello') }
3.5 修正引号
修正字符串中的引号,使其成对出现,确保代码可以正常的解析:
const str = 'hello"world'
3.6 去除空格
删除代码中的空格,确保代码可以正常的解析:
const a = {}
4. 总结
本文主要介绍了 ESLint 报错:Parsing error: Unexpected token,由于这个报错信息没有给出具体的错误位置和原因,我们需要结合代码的实际情况进行详细的排查。文章从不同角度阐述了这个错误的产生原因和解决方案,并给出了示例代码进行说明。希望本文可以为大家解决开发过程中遇到的问题提供帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64633f57968c7c53b044270b