我有一个API后端服务器,该前端由create-react-app
创建的另一台服务器提供服务,我需要将一组特定的请求从CRA服务器代理到API服务器。
我正在尝试使用http-proxy-middleware
。对于只有一个规则的简单用例,它就可以正常工作。但是我不能一次使用多个规则。
我一直在关注文档,并提出了类似这样的内容(setupProxy.js
的内容)。
const proxy = require('http-proxy-middleware');
const proxyTable = {
'/auth/google': 'http://localhost:5000/',
'/api/*': 'http://localhost:5000'
};
const options = {
target: 'http://localhost:3000',
router: proxyTable
};
module.exports = function(app) {
app.use(proxy(options));
};
首先,我不知道target
中的options
属性,但是根据文档,它为proxyTable
中未指定的每个请求设置目标URL。 。好吧,我只想保留所有其他请求,因此我将值设置为与运行CRA的地址相同(不确定这是否是正确的方法,文档尚不清楚)。
我遇到的问题是,如果我尝试将请求路由回去,则会出现此错误。
Error occurred while trying to proxy request / from localhost:3000 to http://localhost:3000 (EADDRNOTAVAIL)
我不确定我是否理解此错误。如果我更改target
的值,则会出现一些与此错误类似的其他错误消息,并且似乎可以正常工作。
任何帮助将不胜感激。
答案 0 :(得分:0)
好吧,我已经通过多次使用代理中间件找到了解决方法-每个规则一个。
对于任何有兴趣的人,
const proxy = require('http-proxy-middleware');
module.exports = function(app) {
app.use(proxy('/api/*', { target: 'http://localhost:5000' }));
app.use(proxy('/auth/google', { target: 'http://localhost:5000' }));
};
但是代理表仍然无法正常工作,因此任何知道如何使其工作的人都请分享。