如何修复React-Native中global.BlobBuilder报错问题?
报错原因&解决办法
我帮你梳理下这两个报错的来龙去脉——你遇到的 BlobBuilder 和 RCTEventEmitter 报错,核心问题是React Native 0.55.4 和 babel-preset-react-native 4.0.0 版本不兼容。新版本的babel预设转译规则和旧版RN的内部模块结构不匹配,再加上缓存堆积,就触发了这些模块引用错误。
下面是亲测有效的解决步骤:
1. 降级babel-preset-react-native到兼容版本
RN 0.55.x 系列和 babel-preset-react-native 3.x 版本适配性最好,先把预设版本降下来:
# npm版本 npm uninstall babel-preset-react-native npm install babel-preset-react-native@3.0.2 --save-dev # yarn版本 yarn remove babel-preset-react-native yarn add babel-preset-react-native@3.0.2 --dev
2. 彻底清理缓存(关键步骤)
缓存堆积是这类奇怪报错的重灾区,一定要清干净:
# 清除metro打包缓存 rm -rf $TMPDIR/metro-* rm -rf $TMPDIR/haste-* # 删除依赖和锁文件,重新安装 rm -rf node_modules package-lock.json yarn.lock npm install # 用yarn的话就执行 yarn install # 如果是iOS项目,清理pod缓存 cd ios && pod deintegrate && pod install && cd .. # 重启metro服务并重置缓存 npx react-native start --reset-cache
3. 检查Babel配置(确保没出错)
打开项目根目录的 .babelrc 文件,确认内容是最基础的配置:
{ "presets": ["react-native"] }
4. 验证修复
完成上面所有步骤后,重启你的Mac(确保所有残留进程都被彻底清理),然后重新运行项目:
npx react-native run-ios # Android项目就用 run-android
额外提一句:你的react@16.3.2和RN0.55.4版本是匹配的,这个不用动,主要问题就是babel预设版本不兼容+缓存。
内容的提问来源于stack exchange,提问作者nDiviD
相关产品推荐
相关产品推荐

