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

Jest报错SyntaxError: Cannot use import statement outside a module求解决方案

你当前的配置存在两个核心问题:1. 同时存在babel.config.js和.babelrc两份Babel配置,会出现配置冲突、覆盖的问题;2. Jest默认不会转译node_modules下的模块,你剩下两个无法识别的导入大概率是属于node_modules下的ES规范模块,没有被Babel转译成CommonJS规范导致报错。

步骤1:合并Babel配置

Babel 7+中babel.config.js是项目级全局配置,适配Jest转译node_modules模块的场景,.babelrc为局部目录配置,容易出现作用范围不足、配置冲突的问题。因此删除项目根目录的.babelrc文件,将所有Babel配置统一到babel.config.js中:

module.exports = {
  presets: [
    "@babel/preset-react", 
    "@babel/preset-typescript",
    [
      "next/babel",
      {
        "preset-env": {
          "modules": "commonjs"
        }
      }
    ]
  ]
}

步骤2:修正Jest配置

修改jest.config.js,补全正则转义符,新增transformIgnorePatterns配置,将你无法识别的两个模块添加到忽略白名单中(示例中xxx、yyy替换为你实际出问题的模块名,多个模块用|分隔):

module.exports = {
  preset: 'ts-jest',
  transform: {
    '^.+\\.(ts|tsx)?$': 'ts-jest',
    "^.+\\.(js|jsx)$": "babel-jest",
  },
  // 配置node_modules下不需要忽略的ES模块
  transformIgnorePatterns: ['/node_modules/(?!(xxx|yyy)/)']
}

可选校验项

检查项目根目录的tsconfig.json,确保开启esModuleInterop配置,避免ES模块和CommonJS模块的导入兼容问题:

{
  "compilerOptions": {
    "esModuleInterop": true,
    // 其他原有配置保持不变
  }
}

内容的提问来源于stack exchange,提问作者Judith Otten

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:06:05