这两者有什么区别?只有(1)正在工作,(2)卡在浏览器中;
(1)app.get('/source*', createProxyMiddleware({ target: serviceProvider}))
(2)app.get('/source*', () => {
createProxyMiddleware({ target: serviceProvider})
})
这两者有什么区别?只有(1)正在工作,(2)卡在浏览器中;
(1)app.get('/source*', createProxyMiddleware({ target: serviceProvider}))
(2)app.get('/source*', () => {
createProxyMiddleware({ target: serviceProvider})
})
createProxyMiddleware({ target: serviceProvider})
这将返回一个尚未使用 express 中间件的参数执行的函数。要使第二个示例正常工作,您只需执行返回的函数,如下所示
2) app.get('/source*', (req, res, next) => {
const func = createProxyMiddleware({ target: serviceProvider});
func(req, res, next);
})
在选项 (2) 中,您放置createProxyMiddleware({ target: serviceProvider})
了一个既不处理请求也不返回处理请求的方法的函数。
() => {}
是写作的简写:
功能() {}
所以本质上,选项(2)中的代码与:
app.get('/source*', function () {
createProxyMiddleware({ target: serviceProvider})
});
基本上你自己的函数接管了渲染器。
我还没有尝试过,但考虑尝试createProxyMiddleware({ target: serviceProvider})
从您的函数返回。
例子:
app.get('/source*', () => {
// do here whatever you planned on doing inside your function before returning the renderer
return createProxyMiddleware({ target: serviceProvider});
});
尝试 :
app.get('/source*', (req,res,next) => {
try {
createProxyMiddleware({ target: serviceProvider})
}
catch(error) {
next(error)
}
})
get 的第二个参数需要匹配参数签名(请求、响应、下一个),这是 express 中任何中间件的签名,包括端点控制器。https://expressjs.com/en/guide/using-middleware.html
1 创建了一个正确的标准中间件函数。
2 不返回任何内容,在响应中不返回任何内容,并且不调用“next()”来移动到下一个请求中间件。
希望有帮助。我正在用手机接听。
让我们假设createProxyMiddelware
函数返回值“hello”。然后我们可以像这样重写你的两个场景:
1. app.get('/source*', "hello")
2. app.get('/source*', () => "hello")
所以你现在可以看到区别了。在第一个场景中,您正在评估createProxyMiddleware
函数。在第二种情况下,第二个参数是一个回调函数,调用时会调用该createProxyMiddelware
函数