javascript - http-proxy 总是挂掉

标签 javascript node.js sockets proxy

我有一个 JavaScript 代理服务器,在使用一段时间后经常挂起。这是代理代码:

var express = require(["express"], function(){}),
    http = require(["http"], function(){}),
    port = (process.env.PORT || 8001),
    server = module.exports = express(),
    httpProxy = require(['http-proxy'], function(){});
var proxy = httpProxy.createProxyServer();
// SERVER CONFIGURATION
// ====================
server.configure(function() {
  server.use(function(req, res, next) {
    if (req.url.indexOf('/any/thing') === 0) {
      //console.log(res);
      proxy.web(req, res, {target: 'http://any.thing.com'});
    } else {
      next();
    }
  });
  server.use('/anything', express["static"](__dirname + "/../public"));
  server.use(express.errorHandler({
    dumpExceptions: true,
    showStack: true
  }));
  server.use(express.bodyParser());
  server.use(server.router);
});
// Start Node.js Server
http.createServer(server).listen(port);

我正在尝试使用 Nightwatch.js 进行一些测试。测试进行到一定程度后,服务器崩溃了。在某些测试中,这一点总是同时达到,而在其他测试中,这取决于服务器何时崩溃以及是否完全崩溃。 这是错误消息:

C:...\node_modules\http-proxy\lib\http-proxy\index.js:119

throw err;

     ^

错误:套接字挂起

at createHangUpError (_http_client.js:215:15)

at Socket.socketCloseListener (_http_client.js:247:23)

at Socket.emit (events.js:129:20)

at TCP.close (net.js:485:12)

停止 Express 服务器

这可能是什么原因?我在谷歌上没能找到答案。

最佳答案

向 http 代理并行发送请求时会引发该错误。 可以通过安装不同版本的 http-proxy 来防止该错误。 对我来说,错误发生在 http-proxy 版本 1.6.2 中。 我通过安装版本 1.0.0 解决了这个问题:

npm uninstall http-proxy

然后

npm install http-proxy@1.0.0

关于javascript - http-proxy 总是挂掉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31262354/

相关文章:

Android - JavaPhoenixChannel - EPIPE(断管)

javascript - 对于数组中存在的值,indexOf 返回 -1

javascript - Node/Webpack 4 - 如何使用根域

java - Vaadin - MenuBar - MenuItem 如何获取操作 - 也许是 javascript

node.js - Nestjs 中多个 graphql 解析器实现的问题

javascript - Angular无法设置http header ,只能使用拦截器

sockets - 被动和主动 socket

C套接字在同一请求中上传和下载文件

javascript - Bootstrap 响应式布局中的 Ytplayer

javascript - 不显示 AngularJS View