不变违规: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
  
)

【问题讨论】:

您是要在 iosandroid 或两者上运行吗? 目前我只在 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' 找不到

带有整数查询参数的 RelayJS 不变违规

不变违规:期望解析的 GraphQL 文档

测试套件无法运行。不变违规:_registerComponent(...):目标容器不是 DOM 元素