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

使用Axios调用Google Maps API遇ECONNREFUSED错误求助

问题分析与解决

核心原因

这个错误既不是Axios本身的问题,也不是URL的逻辑结构问题,是URL中的HTML实体转义错误导致请求被错误路由到本地。

错误信息里的connect ECONNREFUSED ::1:80明确显示请求发向了本地IPv6地址的80端口,而非Google Maps API服务器,说明你的URL被解析成了无效地址,触发了本地路由。

问题点定位

看你代码里的URL模板:

url: `https://maps.googleapis.com/maps/api/place/details/json?place_id=${place['place_id']}&fields=name%2Cplace_id%2Crating%2Cuser_ratings_total%2Cprice_level%2Cformatted_phone_number%2Cwebsite%2Copening_hours%2Cphotos%2Creviews&key=${googleAPIKey}`

其中的&是HTML环境下&的转义字符,但在JavaScript模板字符串中直接使用会被当成URL的一部分,导致参数分隔符失效。比如&fields会被服务器识别为一个参数名而非新参数的分隔符,整个URL格式完全不符合Google API的要求,进而被你的本地环境(或代理)错误导向localhost。

修复方案

  1. 把所有&替换成&,这是URL标准的参数分隔符。
  2. 可选优化:fields参数里的%2C可以直接换成逗号,,Google Maps API支持用逗号分隔字段,可读性更强。

修正后的代码:

configs = {
    method: 'get',
    url: `https://maps.googleapis.com/maps/api/place/details/json?place_id=${place['place_id']}&fields=name,place_id,rating,user_ratings_total,price_level,formatted_phone_number,website,opening_hours,photos,reviews&key=${googleAPIKey}`,
    headers: {}
};

axios(configs)
.then(result => console.log(result))
.catch(err => console.log(err));

验证步骤

  • 修复后先打印console.log(configs.url),复制生成的URL到浏览器中直接访问,确认能返回正常的API响应。
  • 若仍有问题,检查是否存在全局代理配置(比如Axios默认baseURL、系统环境代理),但结合你其他Axios请求正常的情况,大概率是URL转义问题导致的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:46:07