【问题标题】:Invariant Violation: requireNativeComponent: "AIRMap" was not found in the UIManager. No fix?不变违规:requireNativeComponent:在 UIManager 中找不到“AIRMap”。没有修复?
【发布时间】:2019-03-17 22:06:20
【问题描述】:

我已按照 react-native-maps 文档中的指南进行操作:我收到了错误。

我在 stackoverflow 和 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吧?
  • 它应该是这样工作的,但是文档只在运行安装后脚本的上下文中提到了纱线。

标签: react-native


【解决方案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 个解决此问题的方法(取决于您的“依赖项”)

  1. 在您的项目路径的终端/cmd 中运行react-native link
  2. 在 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 会给出与解决问题无关的错误。

        【讨论】:

          猜你喜欢
          • 2019-12-22
          • 2020-05-06
          • 2019-08-27
          • 2020-09-02
          • 2021-06-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多