node.js - SuperAgent + Node.js 连接被拒绝

标签 node.js superagent

我是 Node.js 的新手,所以这可能是一个基本的理解问题,但是当我认为我不应该这样做时,我从 super 代理 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 文件可能不正确或未加载,需要修复。

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

  1. 禁用任何防火墙(如果这是问题所在,您应该为 node 添加规则而不是让防火墙处于禁用状态)
  2. 禁用任何防病毒软件(再次添加权限而不是永久禁用)
  3. sudo setenforce 0 如果你在 *nix 上(撤消 sudo setenforce 1)
  4. curl 和 superagent 将使用不同的 user-agent 字符串 - 您是否正在运行代理?运行 curl http://localhost:5000/-vvv 以查看 curl 在做什么

如果这些仍然不起作用,您可以尝试像 wireshark 这样的数据包捕获工具或 tcpdump跟踪 HTTP 请求并查看它在哪里被拒绝。

关于node.js - SuperAgent + Node.js 连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28696797/

相关文章:

node.js - 不同的 NODE_ENV 用于不同的测试

javascript - 快速 session 不为 Ipad 保存

javascript - 像Superagent这样的语法,我该怎么做?

javascript - Superagent 与 Fetch 返回的 promise ——如何处理这些?

node.js - Mongoose 中的排序无法正常工作

javascript - Superagent 多文件附件

javascript - 如何让重定向等待服务器的响应?

node.js - Nextjs 无法在生产 node_env 的 '.next' 目录中找到有效构建

angularjs - 错误: Future resolved more than once

node.js - [错误 : failed to connect to [localhost:27017]] . 此错误发生在 mongodb 上