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

如何解决Jest中‘SyntaxError: Cannot use import statement outside a module’错误

解决React Native 0.64.4 + Jest 29.2.2的SyntaxError: Cannot use import statement outside a module错误

核心原因是React Native 0.64.4与Jest 29.x版本不兼容,RN 0.64官方推荐的Jest版本为27.x,版本差异导致ES模块解析规则不匹配。以下是可行的解决步骤:

1. 降级Jest及相关依赖到兼容版本

执行以下命令替换依赖版本:

yarn remove jest @types/jest jest-react-native react-test-renderer
yarn add -D jest@27.5.1 @types/jest@27.5.2 jest-react-native@18.0.0 react-test-renderer@0.64.4

注意:react-test-renderer版本必须和你的React Native版本保持一致(0.64.4)。

2. 检查并配置Babel相关设置

确保你的babel.config.js包含React Native预设:

module.exports = {
  presets: ['module:metro-react-native-babel-preset'],
};

3. 配置jest.config.js

如果项目中没有这个文件,在根目录创建jest.config.js,添加以下配置:

module.exports = {
  preset: 'react-native',
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
  transformIgnorePatterns: [
    'node_modules/(?!(react-native|@react-native|@react-navigation)/)',
  ],
};

4. 清理缓存并重新测试

执行命令清理Jest缓存:

yarn jest --clearCache

然后重新运行测试:

yarn jest

额外排查点

  • 确保测试文件的扩展名是.test.js或.spec.js,Jest默认识别这些后缀
  • 检查项目中package.json是否存在"type": "module"配置,如果有需要移除,因为React Native项目目前依赖CommonJS模块规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 04:26:55