在expressjs中使用node-http-proxy时出错

我没有得到node-http-proxy的最后一个版本(虽然这个版本在之前的版本中有效)。 Node.js版本是0.6.12,node-http-proxy版本是0.8.0。 基本上,我有一个服务器监听端口10000和另一个监听端口5000.我想代理这个最后一个家伙所有的请求/ / API(删除这个前缀后)。

我的代码是:

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); 

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

 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 

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

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

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

另外,你可能已经试图说var proxy = new httpProxy.RoutingProxy();