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

React Native降级适配Viro遇Expo版本不兼容及buffer模块缺失问题

解决React Native降级后Expo运行的版本不兼容及buffer模块缺失问题

问题根源

  1. Expo SDK与React Native版本不匹配:Expo SDK 45.0.0强制要求搭配react-native@0.68.2,降级到0.65.1后版本完全不兼容,这是核心警告的原因。
  2. buffer模块缺失:RN版本降级后,部分核心Node模块(如buffer)可能未被默认包含,或者依赖包safe-buffer找不到对应的buffer依赖。

分步解决方案

1. 同步降级Expo SDK到适配react-native@0.65.1的版本

react-native@0.65.1对应的是Expo SDK 43,需将所有Expo相关依赖同步降级到该版本:

  • 修改package.json中的Expo依赖版本示例:
    "expo": "~43.0.0",
    "expo-app-loading": "~1.2.1",
    "expo-font": "~10.0.3"
    
    其余expo-开头的依赖都要对应SDK43的兼容版本
  • 删除旧依赖文件并重新安装:
    rm -rf node_modules yarn.lock
    yarn install
    

2. 修复buffer模块找不到的问题

方案一:手动安装buffer模块

yarn add buffer

方案二:配置Metro bundler支持Node核心模块解析
在项目根目录创建或修改metro.config.js,添加以下内容:

const { getDefaultConfig } = require('@expo/metro-config');

const config = getDefaultConfig(__dirname);

config.resolver.extraNodeModules = {
  buffer: require.resolve('buffer'),
};

module.exports = config;

3. 彻底清除缓存并重启项目

执行以下命令清理所有缓存:

watchman watch-del-all
yarn start --reset-cache

额外注意事项

  • 降级Expo SDK后,第三方依赖(如@react-navigation/native、@rneui/themed)可能需要调整到适配SDK43的版本,避免出现新的兼容性问题。
  • Viro包不支持纯Expo项目,需先使用expo prebuild将项目转为裸工作流,再按照Viro官方文档完成配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:50:23