我对Node.js很新,所以这可能是一个基本的理解问题,但是当我不认为我应该这样时,我从一个超级的http请求中得到了ECONNREFUSED: $curl http://localhost:5000/{"you": "looking good"}$node var request = requ
$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.如果不是您的主机文件可能不正确或未加载,则需要修复.如果它是正确的,请一次尝试这些,然后重复curl和superagent请求进行比较.如果一步不起作用,请将其反转并移至下一步:
>禁用任何防火墙(如果这是问题,您应该为节点添加规则而不是禁用防火墙)
>禁用任何防病毒软件(再次添加权限而不是永久禁用)
> sudo setenforce 0如果你在* nix上(撤消sudo setenforce 1)
> curl和superagent将使用不同的用户代理字符串 – 您是否正在运行代理?运行curl http:// localhost:5000 / -vvv以确切了解curl正在做什么
如果这些仍然不起作用,您可以尝试使用像wireshark或tcpdump这样的数据包捕获工具来跟踪HTTP请求并查看它被拒绝的位置.
