不变违规:requireNativeComponent:在 UIManager 中找不到“AIRMap”。没有修复?
Posted
技术标签:
【中文标题】不变违规:requireNativeComponent:在 UIManager 中找不到“AIRMap”。没有修复?【英文标题】:Invariant Violation: requireNativeComponent: "AIRMap" was not found in the UIManager. No fix? 【发布时间】:2019-03-17 22:06:20 【问题描述】:我已按照 react-native-maps 文档中的指南进行操作:我收到了错误。
我在 *** 和 google 上到处查看,但找不到解决方法。
我尝试了所有可以在论坛上找到的答案,但仍然出现错误。
错误:
Invariant Violation:requireNativeComponent:在 UIManager 中找不到“AIRMap”。
我的代码:
import React from 'react';
import MapView from 'react-native-maps';
import StyleSheet from 'react-native';
export default class App extends React.Component
constructor()
super();
this.state = ;
render()
return (
<MapView
style = styles.map
showsUserLocation = false
followUserLocation = false
zoomEnabled = true
/>
)
const styles = StyleSheet.create (
map:
height: 400,
marginTop: 80
)
【问题讨论】:
您是要在 ios、android 或两者上运行吗? 目前我只在 iOS 上尝试过 抱歉耽搁了。你是如何链接“react-native-maps”的?如果您将react-native link react-native-maps
与 npm 一起使用,请确保使用 --save
标签安装它。
我使用了react-native link react-native-maps
。但是我用的是yarn,所以不用加--save
吧?
它应该是这样工作的,但是文档只在运行安装后脚本的上下文中提到了纱线。
【参考方案1】:
请查看这两个链接,它们为您提供了有关 iOS 和 Android 中 react 原生地图集成的详细信息
Map integration link 1 for Android & ios
Map integration link 2
有时iOS库没有正确链接,所以你需要手动将库添加到Xcode中。
【讨论】:
按照两个教程仍然遇到问题【参考方案2】:试试这个:
打开 xcode 项目 > 你的项目 > 构建阶段 > 链接二进制文件 > 删除 libAirMaps.a > 然后再次添加它>检查它是否有效...... check image for detailed instruction
编辑: 如果您已经安装了 react-native-maps,请尝试手动添加 AirMapsLib。按照此图像上的说明进行操作。之后,再次尝试上述说明。
【讨论】:
不幸的是我找不到 libAirMaps.a 它不在列表中,当我尝试添加它时,xcode 找不到它 感谢您的回答!因此,为了做到最好,我必须按照官方文档的说明(使用react-native link react-native-maps
),然后按照您更新答案的图片进行操作?
问题依旧……【参考方案3】:
我在 iOS 上还没有遇到这个问题,但在 Android 上。
Invariant Violation: requireNativeComponent:xxx not found in UIManager
问题似乎是依赖项未链接到您的项目,因此有 2 个解决此问题的方法(取决于您的“依赖项”)
-
在您的项目路径的终端/cmd 中运行
react-native link
。
在 MainApplication.java 中手动添加依赖项,如下所示:
在你的 MainApplication.java 中手动添加依赖,如下所示:
@Override
protected List<ReactPackage> getPackages()
@SuppressWarnings("UnnecessaryLocalVariable")
List<ReactPackage> packages = new PackageList(this).getPackages();
// Packages that cannot be autolinked yet can be added manually here, for
packages.add(new RNFirebaseAnalyticsPackage());
packages.add(new xxxPackage());
可能有
【讨论】:
【参考方案4】:我已通过仅运行 react-native run-android 解决了此问题。注意:如果您已运行 react-native link,请先取消链接。
【讨论】:
【参考方案5】:将下面的行添加到 MainApplication.java
import com.airbnb.android.react.maps.MapsPackage;
@Override
protected List<ReactPackage> getPackages()
@SuppressWarnings("UnnecessaryLocalVariable")
List<ReactPackage> packages = new PackageList(this).getPackages();
packages.add(new MapsPackage());
return packages;
【讨论】:
【参考方案6】:利用yarn
。因为 npm 会给出与解决问题无关的错误。
【讨论】:
以上是关于不变违规:requireNativeComponent:在 UIManager 中找不到“AIRMap”。没有修复?的主要内容,如果未能解决你的问题,请参考以下文章
不变违规:requireNativeComponent:在 UIManager 中找不到“RNCSafeAreaView”。在 expo 应用程序中反应原生
不变违规:不变违规:尝试从未标记为“本机”的节点获取本机标记 - 反应导航更新导致崩溃
不变违规:TurboModuleRegistry.getEnforcing(...): 'NativeReanimated' 找不到