部署Vercel后@react-google-maps/api报InvalidKeyMapError问题求助
以下是针对你遇到的「Google Maps JavaScript API error: InvalidKeyMapError」问题的排查和解决步骤:
移除Vercel环境变量的引号
本地.env文件需要加引号可能是本地环境的解析特性,但Vercel的环境变量配置不需要额外添加引号。如果在Vercel中给密钥值加了引号,实际传递给应用的密钥会包含引号字符,直接导致Google判定密钥无效。
操作:进入Vercel项目的Settings → Environment Variables,找到NEXT_PUBLIC_GOOGLE_MAPS_ID,将值修改为纯密钥字符串(例如A.....z,不要带首尾的"")。强制重新部署确保环境变量生效
修改Vercel环境变量后,若使用缓存的构建产物,新的变量可能不会被读取。需要触发一次全新构建:
操作:在Vercel项目的Deployments页面,找到最新的部署记录,点击Redeploy,并取消勾选Use existing Build Cache选项,强制重新构建项目。确认所需API已启用
即使密钥设置为无限制,也需确保Google Maps JavaScript API和Places API已在Google Cloud Console中启用(你的代码加载了places库,必须启用该API)。
操作:登录Google Cloud Console,进入API库,搜索上述两个API,确认状态为「已启用」。验证密钥本身的有效性
可以在本地去掉.env文件中密钥的引号,测试应用是否仍能正常运行,以此排除密钥本身包含特殊字符或格式错误的问题。
你的地图组件代码逻辑没有问题,process.env.NEXT_PUBLIC_GOOGLE_MAPS_ID的引用方式符合Next.js客户端环境变量的要求(带NEXT_PUBLIC_前缀)。
内容的提问来源于stack exchange,提问作者zorz

