NodeJS无法向本地Elixir/Phoenix API发送请求求助
解决方案:NodeJS请求Phoenix API遇ECONNREFUSED问题
核心原因
你的Phoenix API绑定的是IPv4地址127.0.0.1,但NodeJS解析localhost时优先使用IPv6地址::1,导致请求尝试连接未被监听的::1:4000,触发连接拒绝错误。
具体解决办法
直接指定IPv4地址发起请求
将NodeJS代码中请求URL的localhost替换为127.0.0.1,比如把http://localhost:4000/api/xxx改成http://127.0.0.1:4000/api/xxx,让请求直接命中Phoenix绑定的IPv4地址。强制NodeJS优先使用IPv4解析
启动NodeJS应用时添加参数--dns-result-order=ipv4first,示例命令:node --dns-result-order=ipv4first your-discord-bot.js这样NodeJS解析
localhost时会优先返回IPv4的127.0.0.1,匹配Phoenix的监听配置。让Phoenix同时监听IPv4和IPv6地址
修改config/dev.exs中的Endpoint配置,把绑定IP改为同时包含IPv4和IPv6的localhost:config :your_app, YourAppWeb.Endpoint, http: [ip: [127.0.0.1, "::1"], port: 4000], # 保留其他原有配置项修改完成后重启Phoenix服务,此时服务会同时监听
127.0.0.1:4000和::1:4000,NodeJS无论用哪种地址解析都能成功连接。
内容的提问来源于stack exchange,提问作者Gabriel
相关产品推荐
相关产品推荐

