Node服务器请求Strapi API时遭遇ECONNREFUSED连接拒绝错误
解决Node服务器请求Strapi API出现ECONNREFUSED ::1:1337的问题
核心原因
错误里的address: '::1'是IPv6本地回环地址,说明你的Node请求解析localhost时优先使用了IPv6,但Strapi默认可能仅监听IPv4的127.0.0.1,导致连接被拒绝。而Postman通常默认优先解析IPv4,所以能正常访问。
解决方案
1. 直接用IPv4地址替换localhost
把请求URL中的http://localhost:1337改成http://127.0.0.1:1337,强制指定IPv4连接:
const request = require('request'); request({ url: 'http://127.0.0.1:1337/api/homepage?populate=*', headers: { 'Authorization': 'Bearer 123455347' }, rejectUnauthorized: false }, function(err, res) { if(err) { console.error(err); } else { console.log(res.body); } });
2. 修改Strapi配置,同时监听IPv4和IPv6
编辑Strapi项目根目录下的config/server.js(Strapi v4版本),将host设置为'0.0.0.0'或'::',让Strapi同时监听所有IPv4和IPv6地址:
module.exports = ({ env }) => ({ host: env('HOST', '0.0.0.0'), port: env.int('PORT', 1337), app: { keys: env.array('APP_KEYS'), }, });
修改后重启Strapi服务,即可兼容两种地址解析。
3. 强制Node环境优先解析IPv4
启动Node服务器时,添加环境变量指定DNS解析顺序优先IPv4:
NODE_OPTIONS=--dns-result-order=ipv4first node your-server-file.js
这样localhost会默认解析到127.0.0.1,和Postman的解析逻辑保持一致。
验证步骤
可以在终端执行ping localhost,查看输出地址是127.0.0.1还是::1,确认解析优先级问题。
内容的提问来源于stack exchange,提问作者Dennis1995
相关产品推荐
相关产品推荐

