1

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

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

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

4

5 回答 5

2
createProxyMiddleware({ target: serviceProvider})

这将返回一个尚未使用 express 中间件的参数执行的函数。要使第二个示例正常工作,您只需执行返回的函数,如下所示

2) app.get('/source*', (req, res, next) => {
  const func = createProxyMiddleware({ target: serviceProvider});
  func(req, res, next);
})
于 2020-04-04T02:52:36.973 回答
1

在选项 (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});
});


于 2020-04-04T02:51:14.143 回答
0

尝试 :

app.get('/source*', (req,res,next) => {
  try {
    createProxyMiddleware({ target: serviceProvider})
  }
  catch(error) {
    next(error)
}
})
于 2020-04-04T02:52:35.840 回答
0

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

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

2 不返回任何内容,在响应中不返回任何内容,并且不调用“next()”来移动到下一个请求中间件。

希望有帮助。我正在用手机接听。

于 2020-04-04T02:52:47.820 回答
0

让我们假设createProxyMiddelware函数返回值“hello”。然后我们可以像这样重写你的两个场景:

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

所以你现在可以看到区别了。在第一个场景中,您正在评估createProxyMiddleware函数。在第二种情况下,第二个参数是一个回调函数,调用时会调用该createProxyMiddelware函数

于 2020-04-04T02:52:56.993 回答