SuperAgent + Node.js连接被拒绝

我对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查询工作正常!

这听起来像是一个防火墙问题,但是首先从terminal运行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-agentstring – 你有一个代理运行? 运行curl http://localhost:5000/ -vvv来查看curl正在做什么

如果这些仍然不起作用,你可以尝试一个像wireshark或tcpdump这样的数据包捕获工具来跟踪HTTP请求,看看它被拒绝。