如何解决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
相关产品推荐
相关产品推荐

