"React Native 版本不匹配" 错误

编辑页面

了解 React Native 版本不匹配的含义,以及如何在 Expo 或 React Native 应用中解决它。


For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.

在开发 Expo 或 React Native 应用时,常常会遇到如下错误:

Terminal
React Native 版本不匹配。
JavaScript 版本:X.XX.XNative 版本:X.XX.X
请确保你已经重新构建了原生代码...

这个错误意味着什么

你在终端中运行的打包器(使用 npx expo start)所使用的 react-native JavaScript 版本,与设备或模拟器上的原生应用版本不同。这种情况可能发生在你升级了 React Native 或 Expo SDK 版本之后,或者 连接到了错误的本地开发服务器。

如何修复

  • 关闭所有正在运行的开发服务器(你可以使用 ps 命令列出所有终端进程,并使用 ps -A | grep "expo\|react-native" 搜索 Expo CLI 或 React Native Community CLI 进程)。

  • 如果这是一个 Expo 项目,请从你的 app.json 文件中移除 sdkVersion 字段,或者确保它与 package.json 文件中的 expo 依赖版本一致。

  • 如果这是一个 Expo 项目,你应该确保你的 react-native 版本正确。运行 npx expo-doctor 会显示你应该安装的 react-native 版本警告。如果你确实升级到了更新的 SDK,请确保运行 npx expo install --fix 并按照提示操作。Expo CLI 会确保 exporeact-native 等包的依赖版本保持一致。

  • 如果这是一个裸 React Native 项目,并且这个错误是在你升级 React Native 版本后立即出现的,你应该仔细检查是否正确完成了每一个升级步骤。

  • 最后:

    • 通过运行 rm -rf node_modules && npm cache clean --force && npm install && watchman watch-del-all && rm -rf $TMPDIR/haste-map-* && rm -rf $TMPDIR/metro-cache && npx expo start --clear 来清除打包器缓存
      • 如果你使用的是 npm,可以在这里找到相应命令。
      • 如果你使用的是 Windows,可以在这里找到相应命令。
    • 如果这是一个裸 React Native 项目,运行 npx pod-install,然后重新构建你的原生项目(运行 yarn android 重新构建 Android,运行 yarn ios 重新构建 iOS)