React-Native加载Bundle失败:无法读取属性'throwIfClosureRequired'求助
解决 React Native 红屏报错:Cannot read property 'throwIfClosureRequired'
这个报错我之前帮朋友排查过,大概率是 Metro 缓存冲突、依赖版本不兼容或者项目初始化时的残留问题导致的,给你整理几个实用的修复步骤,你可以挨个试试:
1. 重置 Metro 缓存并重启服务
新建项目后 Metro 缓存混乱是最常见的诱因,先把缓存清干净:
- 关掉当前运行的 Metro 服务(按
Ctrl+C终止) - 执行缓存重置命令启动 Metro:
npx react-native start --reset-cache - 打开另一个终端,重新运行项目:
npx react-native run-android # Android 项目用这个,iOS 换 run-ios
2. 排查 Node.js 版本兼容性
React Native 对 Node 版本有明确要求,如果你新建项目时自动拉取的依赖和之前项目的 Node 版本不匹配,就容易出问题:
- 查看当前项目对应的 RN 版本要求的 Node 版本(可以看项目根目录的
.nvmrc文件,或者 RN 官网对应版本的文档) - 用
nvm切换到兼容版本(比如很多稳定版 RN 适配 Node 18.x):nvm install 18.17.0 nvm use 18.17.0 - 切换后删除旧依赖和锁文件,重新安装:
rm -rf node_modules package-lock.json # 用 yarn 的话删 yarn.lock npm install # 或者 yarn install
3. 彻底清理依赖与构建文件
有时候依赖安装过程中会出现文件损坏,需要彻底重置:
- 删除
node_modules和锁文件后重新装依赖(步骤同上) - Android 项目额外清理构建缓存:
cd android && ./gradlew clean && cd .. - iOS 项目清理 Pod 缓存并重新安装:
cd ios && pod deintegrate && pod install && cd ..
4. 检查 React Native CLI 版本差异
全局安装的 CLI 和项目本地版本不一致也会引发奇怪的问题:
- 查看全局 CLI 版本:
react-native --version - 对比项目
package.json里react-native的版本,如果差异较大,建议全程用npx执行命令(npx 会优先调用项目本地的 CLI 版本,避免全局版本干扰)
要是以上方法都没解决,你可以试试完全重新初始化一个极简项目,对比两个项目的配置差异,或者仔细看 Metro 启动时的终端日志,里面可能藏着更具体的错误线索。
内容的提问来源于stack exchange,提问作者Jonathan Ishii
相关产品推荐
相关产品推荐

