SuperAgent + Node.js连接被拒绝

时间:2015-02-24 13:14:51

标签: node.js superagent

我对Node.js很陌生,所以这可能是一个基本的理解问题,但是当我不认为我应该这样时,我从一个超级的http请求中得到ECONNREFUSED

$ 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查询的完全相同的代码工作正常!

1 个答案:

答案 0 :(得分:3)

这听起来像是防火墙问题,但首先从终端运行ping localhost。您应该看到localhost有IP 127.0.0.1。如果不是hosts文件可能不正确或未加载,则需要修复。

如果正确,请一次尝试这些,然后重复curlsuperagent请求进行比较。如果一步不起作用,请将其反转并移至下一步:

  1. 禁用任何防火墙(如果这是问题,您应该为node添加规则,而不是禁用防火墙)
  2. 禁用任何防病毒软件(再次添加权限而不是永久禁用)
  3. sudo setenforce 0如果你在* nix上(撤消sudo setenforce 1
  4. curl和superagent将使用不同的user-agent字符串 - 您是否正在运行代理?运行curl http://localhost:5000/ -vvv以确切了解正在做什么
  5. 如果这些仍然不起作用,您可以尝试使用wiresharktcpdump等数据包捕获工具来跟踪HTTP请求并查看它被拒绝的位置。