首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将node-http-proxy与expressjs一起使用时出错

将node-http-proxy与expressjs一起使用时出错
EN

Stack Overflow用户
提问于 2012-03-20 21:24:29
回答 2查看 1.9K关注 0票数 1

我不能让node-http-proxy的最新版本工作(这在以前的版本中是有效的)。Node.js版本为0.6.12,node-http-proxy版本为0.8.0。基本上,我有一台服务器监听端口10000,另一台监听端口5000。我想把所有以/api开头的请求代理给最后一个人(在去掉这个前缀之后)。

我的代码是:

代码语言:javascript
复制
var express = require("express");
var httpProxy = require('http-proxy');
var cluster = require('cluster');
var fs = require('fs');

// Use http server for local tests
var app = express.createServer();

// Proxy request targeting API
app.all('/api/*',function(req, res){

  // Remove '/api' part from query string
  req.url = '/' + req.url.split('/').slice(2).join('/');

  // Create proxy
  var proxy = new httpProxy.HttpProxy();
  proxy.proxyRequest(req, res, {
    target: {
      host: 'localhost',
      port: 5000
    }
  });
});

// Handle static files
app.use(express.static(__dirname + '/public'));

// Run application
app.listen(10000);

静态文件是正确的,但是当涉及到代理的东西时,我得到了这个错误:

代码语言:javascript
复制
Error: Both `options` and `options.target` are required.
at new <anonymous> (/Users/luc/Projects/test/www/node_modules/http-proxy/lib/node-http-proxy/http-proxy.js:53:11)
at /Users/luc/Projects/test/www/server.js:15:16
at callbacks (/Users/luc/Projects/test/www/node_modules/express/lib/router/index.js:272:11)
at param (/Users/luc/Projects/test/www/node_modules/express/lib/router/index.js:246:11)
at pass (/Users/luc/Projects/test/www/node_modules/express/lib/router/index.js:253:5)
at Router._dispatch (/Users/luc/Projects/test/www/node_modules/express/lib/router/index.js:280:4)
at Object.handle (/Users/luc/Projects/test/www/node_modules/express/lib/router/index.js:45:10)
at next (/Users/luc/Projects/test/www/node_modules/express/node_modules/connect/lib/http.js:203:15)
at Object.handle (/Users/luc/Projects/test/www/node_modules/express/lib/http.js:83:5)
at next (/Users/luc/Projects/test/www/node_modules/express/node_modules/connect/lib/http.js:203:15)-error-undefined

我已经按请求添加了目标,但仍然出现相同的错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-20 21:45:54

您需要将选项传递给HttpProxy构造函数,而不是传递给proxyRequest函数。

https://github.com/nodejitsu/node-http-proxy/blob/master/lib/node-http-proxy/http-proxy.js#L51

票数 3
EN

Stack Overflow用户

发布于 2013-09-28 10:32:47

另外,你也可以试着说var proxy = new httpProxy.RoutingProxy();

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9787660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档