SuperAgent + Node.js 连接被拒绝
SuperAgent + Node.js Connection Refused
我是 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 查询工作正常!
这听起来像是防火墙问题,但首先要从终端 运行 ping localhost
。您应该看到 localhost
有 IP 127.0.0.1
。如果不是,您的 hosts
文件可能不正确或未加载,需要修复。
如果正确,一次尝试这些,然后重复 curl
和 superagent
请求进行比较。如果一个步骤不起作用,则反转它并移动到下一个:
- 禁用任何防火墙(如果这是问题所在,您应该为
node
添加规则而不是让防火墙处于禁用状态)
- 禁用任何防病毒软件(再次添加权限而不是永久禁用)
sudo setenforce 0
如果您使用的是 *nix(使用 sudo setenforce 1
撤消)
- curl 和 superagent 将使用不同的
user-agent
字符串 - 你有代理 运行ning 吗? 运行 curl http://localhost:5000/ -vvv
看看 curl 在做什么
如果这些仍然不起作用,您可以尝试像 wireshark or tcpdump 这样的数据包捕获工具来跟踪 HTTP 请求并查看它在哪里被拒绝。
我是 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 查询工作正常!
这听起来像是防火墙问题,但首先要从终端 运行 ping localhost
。您应该看到 localhost
有 IP 127.0.0.1
。如果不是,您的 hosts
文件可能不正确或未加载,需要修复。
如果正确,一次尝试这些,然后重复 curl
和 superagent
请求进行比较。如果一个步骤不起作用,则反转它并移动到下一个:
- 禁用任何防火墙(如果这是问题所在,您应该为
node
添加规则而不是让防火墙处于禁用状态) - 禁用任何防病毒软件(再次添加权限而不是永久禁用)
sudo setenforce 0
如果您使用的是 *nix(使用sudo setenforce 1
撤消)- curl 和 superagent 将使用不同的
user-agent
字符串 - 你有代理 运行ning 吗? 运行curl http://localhost:5000/ -vvv
看看 curl 在做什么
如果这些仍然不起作用,您可以尝试像 wireshark or tcpdump 这样的数据包捕获工具来跟踪 HTTP 请求并查看它在哪里被拒绝。