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

Expo+TypeScript引入google-map-react报div组件配置错误

问题根因

依赖选型错误。google-map-react是纯React Web生态的库,内部直接渲染div这类Web原生DOM元素,React Native(包括Expo的iOS、Android原生运行环境)没有DOM组件体系,无法识别这类元素,这就是报错提示找不到div对应视图配置的直接原因。你之前尝试的升级React版本、重装Node、重装expo-cli、切换JavaScript开发、修改package.json依赖配置这些操作都没有触及问题本质,自然无法解决问题。

解决方案

根据你的目标运行场景二选一即可:

  • 如果你只需要开发Expo Web端应用:不要在iOS/Android原生端(Expo Go)调试,直接执行expo start --web启动Web调试服务,google-map-react就可以正常渲染。注意你代码里写的100vw、100vh是Web专属单位,仅在Web端生效,原生端不识别。
  • 如果你需要兼容iOS/Android原生端:直接卸载google-map-react,使用Expo生态官方适配的跨端地图库react-native-maps,操作步骤如下:
    1. 卸载无用依赖
      npm uninstall google-map-react @types/google-map-react
      
    2. 安装适配Expo版本的地图库
      expo install react-native-maps
      
    3. 替换原有地图代码,适配RN组件写法,参考实现如下:
      import React, { useState } from "react";
      import { View, StyleSheet } from 'react-native';
      import MapView, { Region } from 'react-native-maps';
      
      const API_KEY = "MyGoogleApiToken";
      // 初始定位区域,latitudeDelta/longitudeDelta控制地图缩放级别,数值越小缩放程度越高
      const initialRegion: Region = {
        latitude: 35.39,
        longitude: 139.44,
        latitudeDelta: 0.005,
        longitudeDelta: 0.005,
      };
      
      export default function Apps() {
        const [region, setRegion] = useState<Region>(initialRegion);
        return (
          <View style={styles.container}>
            <MapView
              style={styles.map}
              initialRegion={region}
              onRegionChangeComplete={setRegion}
              provider="google"
              apiKey={API_KEY}
            />
          </View>
        );
      };
      
      const styles = StyleSheet.create({
        container: {
          flex: 1,
        },
        map: {
          width: '100%',
          height: '100%',
        }
      })
      
    4. 原生端运行前需要在项目的app.json配置文件中,对应iOS、Android字段下填入你申请的Google Maps API密钥,Web端会自动适配不需要额外配置。
避坑提示

后续选RN/Expo依赖时,优先选名称带react-native-前缀、文档明确说明支持React Native的库。凡是面向纯React Web开发的库,只要内部直接操作DOM、渲染div/span这类Web元素,在原生端运行都会报同类视图配置错误。你项目里已经安装的react-native-webview虽然也可以通过嵌入网页的方式加载Google地图,但交互体验、加载性能都远差于原生地图组件,非特殊场景不推荐使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 19:15:34