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

React Native报错:ReferenceError: Buffer未找到及AppRegistry异常求助

解决React Native中ReferenceError: Buffer未找到及AppRegistry注册错误

问题重现

开发React Native应用时出现以下报错:

ReferenceError: Can't find variable: Buffer
 ERROR  Invariant Violation: Module AppRegistry is not a registered callable module (calling runApplication). A frequent cause of the error is that the application entry file path is incorrect.
      This can also happen when the JS bundle is corrupt or there is an early initialization error when loading React Native.

已尝试执行npm install --save buffer并在index.js/App.js顶部添加全局Buffer设置,但问题未解决。

解决方案

1. 安装Node核心模块Polyfill包

安装node-libs-react-native,它提供了React Native环境缺失的Node.js核心模块(包括Buffer):

npm install --save node-libs-react-native

2. 配置Metro Bundler

修改项目根目录的metro.config.js,让Metro识别这些Polyfill模块:

const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');
const extraNodeModules = require('node-libs-react-native');

const config = {
  resolver: {
    extraNodeModules,
  },
};

module.exports = mergeConfig(getDefaultConfig(__dirname), config);

3. 提前加载Polyfill

在index.js的最顶部(所有import语句之前)添加代码,确保Polyfill在React Native初始化前生效:

// 全局引入所有Node核心模块Polyfill
import 'node-libs-react-native/globals';

若只需单独处理Buffer,可替换为:

import { Buffer } from 'buffer';
global.Buffer = Buffer;

4. 清除缓存并重启服务

缓存会导致修改不生效,执行以下命令重置缓存并重启Metro:

npx react-native start --reset-cache

之后重新运行应用:

# Android
npx react-native run-android

# iOS
npx react-native run-ios

额外排查项

  • 检查index.js中的AppRegistry注册逻辑,确保入口组件路径正确:
    import App from './App';
    AppRegistry.registerComponent(appName, () => App);
    
  • 确认package.json中已正确包含buffer和node-libs-react-native依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 14:00:15