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

NextJS + TypeScript项目中ts-jest无法正常工作问题求助

解决NextJS + TypeScript项目中ts-jest的SyntaxError: Cannot use import statement outside a module错误

针对你遇到的axios导入语句引发的模块语法错误,以下是可行的修复方案:

1. 修正transformIgnorePatterns配置

默认情况下Jest会跳过node_modules目录下的代码转译,但axios目前发布的包可能使用了未转译的ES模块语法,导致Jest无法识别。你需要明确指定让Jest转译axios(以及其他可能有同样问题的依赖):

修改你的jest.config.js:

const nextJest = require('next/jest')

const createJestConfig = nextJest({
    dir: './',
})

/** @type {import('ts-jest').JestConfigWithTsJest} */
const customJestConfig = {
  preset: 'ts-jest',
  testEnvironment: 'node',
  transform: {
    "^.+\\.tsx?$": "ts-jest"
  },
  // 关键:排除不需要转译的包,明确包含需要转译的axios
  transformIgnorePatterns: [
    "/node_modules/(?!axios)/"
  ],
};   

module.exports = createJestConfig(customJestConfig)

这里的/(?!axios)/是正则负向预查,表示除了axios之外,其他node_modules里的包都跳过转译。如果还有其他依赖也报同样错误,可以添加进去,比如/(?!axios|another-package)/。

2. 避免next/jest与ts-jest的配置冲突

next/jest本身已经集成了对TypeScript和NextJS项目的适配,你可能不需要单独指定preset: 'ts-jest'和transform配置,这可能导致冲突。尝试简化配置:

const nextJest = require('next/jest')

const createJestConfig = nextJest({
    dir: './',
})

const customJestConfig = {
  testEnvironment: 'node',
  transformIgnorePatterns: [
    "/node_modules/(?!axios)/"
  ],
};   

module.exports = createJestConfig(customJestConfig)

next/jest会自动处理.tsx?文件的转译,不需要手动指定ts-jest的transform规则。

3. 额外排查步骤

  • 清除Jest缓存:执行npx jest --clearCache,缓存的旧转译文件可能导致问题。
  • 检查依赖版本:确认next、ts-jest、jest、typescript的版本是否兼容,比如next 13+对jest的版本有要求,需保证版本匹配。
  • 检查测试文件中的导入:确保测试文件使用的模块语法(import/require)与Jest配置支持的模块系统一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 22:20:30