问题描述
我正在尝试使用setupProxy.js代理多个API,但完全无法正常工作。
我现在可以在开发人员中代理请求的唯一方法是在package.json中设置proxy
字符串,但这不能解决我的问题,因为我需要代理多个端点,并且只能使用一个字符串。
我正在使用"http-proxy-middleware": "^0.19.1"
我的setupProxy.js看起来像这样:
var express = require('express');
var app = express();
var proxy = require('http-proxy-middleware');
var cors = require('cors')
module.exports = function() {
app.use(cors());
app.use(proxy('/api',{ target: 'http://localhost:52992/' }));
app.use(proxy('/otherapi',{ target: 'https://localhost:44309/' }));
app.get('/einreichung',function(req,res){
res.sendfile(__dirname + '/build/index.html');
});
app.use(express.static(__dirname + '/build'));
app.listen(3000,function () {
console.log('Example app listening on port 3000!');
});
}
我尝试了不同的修改。没有module.exports,在function(app)
中有app参数,没有express
和app variables
,但没有任何作用。
解决方法
您必须从createProxyMiddleware
正确导入http-proxy-middleware
:
var express = require('express');
var app = express();
var { createProxyMiddleware } = require('http-proxy-middleware');
var cors = require('cors');
https://create-react-app.dev/docs/proxying-api-requests-in-development
,尝试使用传递给匿名函数的第一个 arg 作为 app
module.exports = function(app) {
// your code...
}