You need to enable JavaScript to run this app. @react-google-maps/api Autocomplete报无法正确加载Google地图错误如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

@react-google-maps/api Autocomplete报无法正确加载Google地图错误如何解决?

问题核心成因

触发GoogleIsNotDefined报错、地图无法正常加载的常见原因集中在三点:

  • 组件挂载时序错位:直接通过嵌套LoadScript的方式渲染地图和Autocomplete组件时,没有等Google Maps全局对象加载完成就触发了子组件的初始化逻辑,导致找不到全局google变量
  • 谷歌侧API配置不匹配:仅填写API密钥没有完成对应服务开通,或者密钥配置了域名访问限制、配额超限,导致JS脚本加载被拦截
  • 库版本兼容问题:旧版本的@react-google-maps/api 存在Autocomplete组件初始化时未校验全局对象存在性的缺陷,官方旧版演示片段也会触发同类报错
修复步骤
  1. 调整组件加载逻辑,用加载状态判断控制渲染时机
    替换原本的嵌套LoadScript写法,改用库提供的useLoadScript Hook精准获取加载状态,脚本未完全加载时不渲染地图和Autocomplete组件,从根源避免找不到全局google变量的问题。
    可直接复用的正确实现代码:
    import React from 'react'
    import { GoogleMap, Autocomplete, useLoadScript } from '@react-google-maps/api';
    
    const LIBRARIES = ['places'];
    const containerStyle = { width: '1200px', height: '500px' };
    const center = { lat: -3.745, lng: -38.523 };
    
    const Gmap = () => {
      const { isLoaded, loadError } = useLoadScript({
        googleMapsApiKey: process.env.REACT_APP_GOOGLE_MAPS_API_KEY,
        libraries: LIBRARIES,
      });
    
      if (loadError) return <div>地图加载失败,请检查API配置</div>;
      if (!isLoaded) return <div>地图正在加载...</div>;
    
      return (
        <GoogleMap mapContainerStyle={containerStyle} center={center} zoom={10}>
          <Autocomplete>
            <input
              type="text"
              placeholder="输入地点搜索"
              style={{
                boxSizing: 'border-box',
                border: '1px solid transparent',
                width: '240px',
                height: '32px',
                padding: '0 12px',
                borderRadius: '3px',
                boxShadow: '0 2px 6px rgba(0, 0, 0, 0.3)',
                fontSize: '14px',
                outline: 'none',
                textOverflow: 'ellipses',
                position: 'absolute',
                left: '50%',
                marginLeft: '-120px',
                top: '2%'
              }}
            />
          </Autocomplete>
        </GoogleMap>
      );
    }
    
    export default React.memo(Gmap)
    

注意:Autocomplete组件依赖places扩展库,配置加载参数时必须显式声明加载该库,否则自动补全功能会无法正常触发。

  1. 核对谷歌云控制台的API配置
    确认绑定当前使用的API密钥的项目,已经开通「Maps JavaScript API」和「Places API」两个服务;检查密钥的HTTP来源限制、配额设置,避免脚本加载被拦截。

  2. 升级依赖版本
    将@react-google-maps/api升级到最新稳定版本,解决旧版本中组件初始化的兼容bug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 02:54:05