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

React Native iOS:requireNativeComponent未在UIManager中找到

解决“requireNativeComponent was not found in the UIManager”问题

1. 确保npm包的iOS原生文件被正确引入

本地开发时原生文件直接在工程里,但npm发布后,主应用的Xcode不会自动导入包内的原生代码,需要通过podspec配置让CocoaPods自动处理:

  • 在npm包根目录创建[你的包名].podspec文件,示例内容:
require "json"

package = JSON.parse(File.read(File.join(__dir__, "package.json")))

Pod::Spec.new do |s|
  s.name         = package["name"]
  s.version      = package["version"]
  s.summary      = package["description"]
  s.homepage     = package["homepage"]
  s.license      = package["license"]
  s.authors      = package["author"]

  s.platforms    = { :ios => "11.0" }
  s.source       = { :git => package["repository"]["url"], :tag => "#{s.version}" }

  # 匹配包内所有iOS原生文件路径
  s.source_files = "ios/**/*.{h,m,swift}"
  
  s.dependency "React-Core"
end
  • 在包的package.json中添加配置,让RN自动链接识别podspec:
"react-native": {
  "podspecPath": "./[你的包名].podspec"
}

2. 验证模块注册名称一致性

你的JS端调用CounterView是正确的(RN会自动去掉原生模块名末尾的Manager),但需要确认:

  • 原生端CounterViewManager.m中的RCT_EXTERN_MODULE(CounterViewManager, RCTViewManager)没有拼写错误
  • 主应用中没有其他模块注册了同名的CounterViewManager

3. 重新安装依赖并清理缓存

  • 进入主应用的ios目录,执行pod install --repo-update,确保拉取并安装包的原生依赖
  • 清理RN缓存:npx react-native start --reset-cache
  • 清理Xcode缓存:打开Xcode,选择Product > Clean Build Folder,然后重新编译主应用

4. 手动导入原生文件(自动链接失效时)

如果以上步骤无效,手动将包内的iOS文件加入主应用工程:

  • 打开主应用Xcode工程,右键点击项目目录,选择Add Files to "[你的应用名]"
  • 选中npm包ios目录下的所有.swift和.m文件,勾选Copy items if needed和对应的编译target

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:50:28