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

升级React Native至0.71.3后Jest测试报错:遇到意外令牌

解决Expo SDK 48升级后Jest测试"意外令牌"报错方案

1. 同步核心依赖版本

你的jest-expo仍停留在47.0.0版本,必须与Expo SDK 48保持版本一致;同时react-test-renderer版本需和项目中react的18.2.0版本匹配,这是导致版本冲突的核心原因之一。

执行命令更新依赖:

npm install jest-expo@48.0.0 react-test-renderer@18.2.0 --save-dev

2. 调整Babel配置适配RN 0.71+

React Native 0.71对Babel转译规则有更新,修改babel.config.js如下:

先安装必要插件:

npm install @babel/preset-env --save-dev

更新配置文件:

module.exports = function(api) {
  api.cache(true);
  return {
    presets: [
      'babel-preset-expo',
      ['@babel/preset-env', { targets: { node: 'current' } }]
    ],
    env: {
      test: {
        presets: [
          ['babel-preset-expo', { modules: 'commonjs' }],
          ['@babel/preset-env', { targets: { node: 'current' } }]
        ],
        plugins: ['@babel/plugin-transform-modules-commonjs']
      }
    }
  };
};

3. 优化Jest转译规则

修改package.json中的Jest配置,添加transformIgnorePatterns确保第三方依赖被正确转译:

"jest": {
  "preset": "jest-expo",
  "setupFiles": ["./jest-setup.js"],
  "transformIgnorePatterns": [
    "node_modules/(?!((jest-)?react-native|@react-native(-community)?|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|react-native-paper))"
  ]
}

4. 清理缓存重新测试

执行以下命令清除缓存并重装依赖:

npx jest --clearCache
rm -rf node_modules package-lock.json
npm install
npm run test

若仍有报错,查看具体报错文件路径,将对应第三方库添加到transformIgnorePatterns的排除列表中,确保Jest会对其进行转译。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 13:33:26