Jest 配置中遇到的 Unexpected token import 错误的解决方法

阅读时长 5 分钟读完

前言

在前端开发中,单元测试是必不可少的一环。Jest 是 React 生态圈中最常用的测试工具之一,其强大的功能和友好的 API 受到了很多人的喜爱。然而,在使用 Jest 进行测试时,很容易遇到 "Unexpected token import" 的错误,导致测试无法正常运行。本文将带你解决这个问题并指导你如何正确配置 Jest。

问题描述

当我们使用 Jest 进行测试时,如果我们的源代码中含有 ES6 中的 import/export 语法,那么 Jest 会提示我们 "Unexpected token import" 的错误,例如:

-- -------------------- ---- -------
------------ ---------- ----- ------

- - - ------ ----- ---- --------
    - -

-- --------------- ----------------
-- -------- ------------------------------------------
-- --------------- ------------------------------------------
-- ----------------------------- ------------------------------------------
-- ----------- -----------------------------------------
-- --------------------- -----------------------------------------

这个错误提示意味着 Jest 无法识别 import 语法,导致编译失败。那么,我们该怎样解决这个问题呢?

解决方法

解决 "Unexpected token import" 的错误,有两种方法:

方法一:使用 Babel 转义

第一种方法是使用 Babel 转义,它可以将 ES6 的 import/export 语法转换成 CommonJS 的 require/module.exports 语法,使得 Jest 能够正确识别代码。

首先,我们需要安装以下依赖:

然后,在项目根目录中创建一个 .babelrc 或者 babel.config.js 文件,写入如下内容:

这样,我们就配置好了 Babel 的基本设置。最后,我们需要在 Jest 的配置文件中告诉 Jest 使用 Babel 进行转义。打开 jest.config.js 文件,添加如下代码:

这样,我们就完成了 Jest 的 Babel 配置。现在,重新运行测试,问题就应该已经解决了。

方法二:使用 Jest 的配置

第二种方法是使用 Jest 的配置。在 Jest 的配置文件中,我们可以指定全局变量,包括 import 语法的函数。现在,我们就来看一个具体的例子。

示例代码

我们有一个名为 greet.js 的模块,它输出了一个名为 greet 的函数。我们使用 import 语法导入 greet 函数,并在 test.js 文件中使用它。

greet.js:

test.js:

当我们运行 Jest tester 时,会得到如下的错误提示:

-- -------------------- ---- -------
------------ ---------- ----- ------

- - - ------ - ----- - ---- ----------
    - -

-- ------------------------------------------ ----------------------------------------------------------------
-- --------------------------- ----------------------------------------------------------------
-- ------------------ -----------------
-- -------------------- -----------------------------------------------
-- ------------------ -----------------

接下来,我们可以开始配置 Jest 的全局变量了。在 jest.config.js 文件中,添加如下代码:

-- -------------------- ---- -------
-------------- - -
  ---
  -------- -
    ---------- -
      ------------ -
        -------- --------------- - -------- - ----- --------- - ----
      --
    --
    --------- -----
  --
--

现在,我们再次运行测试,问题应该就已经解决了。

总结

在前端开发中,单元测试是非常重要的一环。在使用 Jest 进行测试时,我们很容易遇到 "Unexpected token import" 的错误,这是因为 Jest 无法识别 ES6 中的 import/export 语法。为了解决这个问题,我们可以使用 Babel 转义或者使用 Jest 的全局变量进行配置。以上两种方法各有优劣,需要根据实际情况选择。希望本文能够帮助你解决这个问题,并指导你进行 Jest 的正确配置。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e7505ef6b2d6eab32e3d57

纠错
反馈