我对Node.js很陌生,所以这可能是一个基本的理解问题,但是ECONNREFUSED
当我认为我不应该从超级代理HTTP请求中获取时:
$ curl http://localhost:5000/
{"you": "looking good"}
$ node
> var request = require("superagent");
> var req = request.get("http://localhost:5000/").on('error', function (err) {
console.log("There's an emergency is going on.", err)
}).end(function (data) {
console.log("All is well", data.body)
});
There's an emergency is going on. { [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect' }
我以什么假设打破了这一点?我实际上是在编写同构JavaScript,并且使浏览器上的http查询工作正常的代码完全相同!
这听起来像防火墙问题,但首先ping localhost
从终端运行。您应该看到localhost
具有IP 127.0.0.1
。如果不是这样,您的hosts
文件可能不正确或未加载,则需要修复。
如果正确,请一次尝试这些操作,然后重复curl
和superagent
请求进行比较。如果一个步骤不起作用,则将其反转并转到下一个步骤:
node
而不是禁用防火墙)sudo setenforce 0
如果您使用的是* nix(用撤消sudo setenforce 1
)user-agent
字符串-您是否正在运行代理?跑去curl http://localhost:5000/ -vvv
看看究竟卷曲在做什么如果这些仍然不起作用,您可以尝试使用Wireshark或tcpdump之类的数据包捕获工具来跟踪HTTP请求并查看在何处被拒绝。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句