create-react-app & jest — SyntaxError:意外的令牌导入

reactjs

1个回答

写回答

小黄不饿

2025-07-08 20:20

+ 关注

JS
JS

使用create-react-app和jest进行单元测试时,有时会遇到SyntaxError: Unexpected token import的错误。这个错误通常是由于在使用import语句时,测试文件没有正确的指定babel配置所致。本文将介绍如何解决这个问题,并给出一个案例代码来说明。

在使用create-react-app创建一个新的React项目后,我们通常会使用jest来编写和运行单元测试。但是,当我们在测试文件中使用import语句时,有时会遇到SyntaxError: Unexpected token import的错误。这个错误的原因是因为默认情况下,jest不支持ES6的模块导入语法。为了解决这个问题,我们需要添加一些配置来告诉jest如何处理这些import语句。

首先,我们需要安装一些必要的依赖。在项目根目录下,运行以下命令:

npm install --save-dev babel-jest @babel/preset-env @babel/preset-react

接下来,我们需要在项目根目录下创建一个babel.config.JS文件,并添加以下代码:

Javascript

module.exports = {

presets: ['@babel/preset-env', '@babel/preset-react'],

};

这个配置文件告诉babel使用@babel/preset-env和@babel/preset-react来处理我们的代码。@babel/preset-env会根据目标环境自动确定需要的babel插件和polyfills,而@babel/preset-react会处理React中的JSX语法。

然后,我们需要更新package.JSon文件中的jest配置。在package.JSon文件中找到"jest"字段,并添加以下代码:

JSon

"jest": {

"transform": {

"^.+\\.JSx?$": "babel-jest"

}

}

这个配置告诉jest使用babel-jest来处理测试文件中的代码。

现在我们可以重新运行我们的测试,这次应该不会再遇到SyntaxError: Unexpected token import的错误了。

下面是一个简单的案例代码,用来说明如何解决这个问题:

Javascript

// utils.JS

export const add = (a, b) => {

return a + b;

};

// utils.test.JS

import { add } from './utils';

test('add function should return the sum of two numbers', () => {

expect(add(2, 3)).toBe(5);

});

在这个案例中,我们有一个名为add的函数,用来返回两个数字的和。在测试文件中,我们使用import语句来导入这个函数,并编写了一个简单的测试来验证它的行为。如果我们没有进行上述的配置,运行这个测试时就会遇到SyntaxError: Unexpected token import的错误。但是,通过添加babel配置和更新jest配置,我们可以成功运行这个测试,并验证add函数的行为是否正确。

解决SyntaxError: Unexpected token import的问题

在使用create-react-app和jest进行单元测试时,有时会遇到SyntaxError: Unexpected token import的错误。这个错误通常是由于测试文件没有正确指定babel配置所致。为了解决这个问题,我们需要添加一些配置来告诉jest如何处理import语句。首先,我们需要安装一些必要的依赖,然后创建babel配置文件,并更新jest配置。通过这些步骤,我们可以成功解决这个问题,并顺利运行我们的单元测试。

以上就是关于使用create-react-app和jest解决SyntaxError: Unexpected token import的问题的介绍和案例代码。希望本文对你有所帮助,谢谢阅读!

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号