解决 Jest 中的 “‘yarn test’ 出现 Unexpected token ‘)’” 问题

在进行前端开发时,我们经常使用 Jest 进行单元测试。然而,在使用 Jest 进行测试时,有时候会出现 “‘yarn test’ 出现 Unexpected token ‘)’” 的问题,这是什么原因呢?如何解决这个问题呢?

问题原因

Jest 在运行测试时,会将代码转换成 ES5 的代码,然后再执行测试。而有些代码可能会包含一些 ES6 或者 ES7 的语法,例如箭头函数、async/await 等,而 Jest 默认是不支持这些语法的。因此,当我们在测试文件中使用这些语法时,就会出现 “‘yarn test’ 出现 Unexpected token ‘)’” 的错误。

解决方法

方法一:使用 Babel 转换器

一种解决方法是使用 Babel 转换器,将测试文件中的 ES6/ES7 语法转换成 ES5 语法。具体步骤如下:

  1. 安装 Babel 转换器

在项目的根目录下,使用以下命令安装 Babel 转换器:

  1. 配置 Babel

在项目的根目录下,创建一个 .babelrc 文件,写入以下内容:

这个配置文件告诉 Babel 使用 @babel/preset-env 这个预设来转换代码。

  1. 修改 Jest 配置

在项目的根目录下,打开 package.json 文件,找到 Jest 的配置,将其修改为以下内容:

这个配置告诉 Jest 使用 babel-jest 插件来转换测试文件中的代码。

方法二:使用 @babel/preset-env 预设

另一种解决方法是使用 @babel/preset-env 预设。这个预设可以根据你的目标浏览器或者 Node.js 版本,自动转换代码。具体步骤如下:

  1. 安装 @babel/preset-env

在项目的根目录下,使用以下命令安装 @babel/preset-env:

  1. 修改 Jest 配置

在项目的根目录下,打开 package.json 文件,找到 Jest 的配置,将其修改为以下内容:

这个配置告诉 Jest 使用 @babel/preset-env 这个预设来转换测试文件中的代码。

示例代码

以下是一个包含 ES6 语法的测试文件:

如果你不做任何处理,运行 yarn test 命令时,就会出现 “‘yarn test’ 出现 Unexpected token ‘)’” 的错误。使用上面提到的两种方法之一,就可以解决这个问题。

总结

在使用 Jest 进行测试时,如果出现 “‘yarn test’ 出现 Unexpected token ‘)’” 的问题,可以使用 Babel 转换器或者 @babel/preset-env 预设来解决。这两种方法都可以将测试文件中的 ES6/ES7 语法转换成 ES5 语法,使得 Jest 可以正确地执行测试。

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


纠错
反馈