You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入React时Jest测试套件运行失败,求调试方案

解决Jest测试React组件时的SyntaxError: Unexpected identifier错误

这个错误的核心原因是Jest没有正确转译ES6模块语法(import/export)——Node.js默认使用CommonJS规范,原生不识别ES6的模块语法,所以需要通过Babel来转译你的测试代码和组件代码。

下面是一步步的解决方案:

1. 安装必要的Babel依赖

首先确保你安装了Babel核心包、适配React和环境的预设,以及babel-jest(用来让Jest调用Babel转译代码):

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

如果你的React版本是17+,还要额外安装Enzyme的适配包(因为官方Enzyme暂时不支持17+):

npm install --save-dev @wojtekmaj/enzyme-adapter-react-17

2. 配置Babel转译规则

在项目根目录创建或修改.babelrc文件(或者babel.config.js,推荐后者用于Monorepo或更复杂的配置),添加React和环境预设:

方式1:使用.babelrc

{
  "presets": [
    "@babel/preset-env",
    "@babel/preset-react"
  ]
}

方式2:使用babel.config.js

module.exports = {
  presets: [
    // 适配当前Node.js版本的语法
    ['@babel/preset-env', { targets: { node: 'current' } }],
    // 转译JSX语法
    '@babel/preset-react'
  ]
};

3. 配置Jest的转译规则

在package.json里添加Jest的配置,指定用babel-jest处理.js/.jsx文件,同时设置测试环境为jsdom(因为React组件需要DOM环境):

"jest": {
  "transform": {
    "^.+\\.(js|jsx)$": "babel-jest"
  },
  "testEnvironment": "jsdom"
}

4. 完善Enzyme的配置(如果使用Enzyme)

在你的测试文件顶部添加Enzyme的适配器配置,让它适配你的React版本:

import React from 'react';
import { shallow } from 'enzyme';
import Enzyme from 'enzyme';
// 根据你的React版本替换适配器包
import Adapter from '@wojtekmaj/enzyme-adapter-react-17';

Enzyme.configure({ adapter: new Adapter() });

import Basket from '../../src/components/ClientBasket/basket';
// ... 你的测试代码

额外说明:关于ExperimentalWarning

你看到的(node:79620) ExperimentalWarning: The fs.promises API is experimental是Node.js的版本警告,不影响测试执行,你可以通过升级Node.js到LTS稳定版来消除这个警告。

最后,重新运行你的测试命令,应该就能正常执行了。

内容的提问来源于stack exchange,提问作者Emane Irain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:07:56