传递函数与 express 中的 () => {} 的区别

Difference between passing function and the () => {} in express

这两者有什么区别?只有 (1) 有效,(2) 卡在浏览器中;

(1) app.get('/source*', createProxyMiddleware({ target: serviceProvider}))

(2) app.get('/source*', () => { createProxyMiddleware({ target: serviceProvider}) })

在选项 (2) 中,您将 createProxyMiddleware({ target: serviceProvider}) 放置在一个不处理请求的函数内,也不 return 一个处理请求的方法。

() => {} 是 shorthand 写作:

函数(){}

所以本质上,选项 (2) 中的代码与:

app.get('/source*', function () {
  createProxyMiddleware({ target: serviceProvider})
});

基本上你自己的函数接管了渲染器。

我还没有尝试过,但可以考虑从您的函数中尝试 return 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)
}
})
createProxyMiddleware({ target: serviceProvider})

此 returns 一个尚未使用来自 express 中间件的参数执行的函数。 要使第二个示例起作用,您只需按以下方式执行返回的函数

2) app.get('/source*', (req, res, next) => {
  const func = createProxyMiddleware({ target: serviceProvider});
  func(req, res, next);
})

get 的第二个参数需要匹配参数签名(请求、响应、下一个),这是 express 中任何中间件的签名,包括端点控制器。 https://expressjs.com/en/guide/using-middleware.html

1 创建一个正确的标准中间件函数。

2 没有 return 任何东西,没有 return 任何响应,也没有调用 "next()" 进入下一个请求中间件。

希望对您有所帮助。我正在从我的 phone 回答。

让我们暂时假设 createProxyMiddelware 函数 returns 值 "hello"。然后我们可以像这样重写你的两个场景:

1. app.get('/source*', "hello")
2. app.get('/source*', () => "hello")

所以你现在可以看出区别了。在第一个场景中,您正在计算 createProxyMiddleware 函数。在第二种情况下,第二个参数是回调函数,调用时将调用 createProxyMiddelware 函数