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

React Native Metro Bundler报错:Property 'require'不存在

解决Metro Bundler无法向设备打包JS代码的问题

针对你的问题,按以下步骤排查修复:

1. 彻底清理缓存(重点解决index.bundle异常)

之前的缓存重置可能没清理干净,执行这套命令彻底清掉Metro和原生端的缓存:

# 删除Metro深层缓存
rm -rf node_modules/.cache/metro-*
# 带强制清理参数启动Metro
npx react-native start --reset-cache --clean
# 手动删除原生构建缓存
rm -rf ios/build android/build

2. 检查Metro配置是否被篡改

对比正常项目的metro.config.js,重点看这几个配置项:

  • resolver.sourceExts:是否遗漏了js/ts等核心扩展名
  • resolver.assetExts:是否错误包含了不该打包的文件类型
  • transformer:是否引入了自定义转换器导致打包逻辑异常
    如果是引入其他项目后出问题,检查被引入项目是否修改了全局Metro配置。

3. 修复设备与开发机的网络连通性

浏览器能访问http://localhost:8081不代表设备能解析,试试:

  • 查看开发机的局域网IP(比如192.168.1.100)
  • 在设备浏览器里访问http://[你的IP]:8081/index.bundle?platform=ios,确认是否能正常加载
  • 如果能加载,把iOS项目AppDelegate.m里的打包URL从localhost换成你的局域网IP;Android则修改MainApplication.java里的对应配置。

4. 手动生成bundle验证打包逻辑

执行命令手动生成iOS平台的bundle,对比正常项目的输出:

npx react-native bundle --platform ios --entry-file index.js --bundle-output ios/main.jsbundle --dev false

如果生成的文件还是异常,检查项目入口文件(index.js/index.tsx)是否被修改,或者是否有第三方依赖干扰了打包流程。

5. 排查依赖冲突

引入其他项目后出问题,大概率是依赖版本不兼容:

  • 用npm list metro-react-native-babel-preset查看Metro相关包的版本,和正常项目统一
  • 删掉package-lock.json/yarn.lock后重新执行npm install,避免锁文件残留的冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:35:26