提问者:小点点

什么文档描述了传递给express App.Method回调参数的内容


我对javascript和nodejs一无所知,有时无法理解回调函数。我发现最让人困惑的是找到什么参数(或者应该叫参数吗?)传递到回调函数中。

请考虑以下示例

app.get('/', function (req, res) {
  res.send('GET request to homepage');
});

如果我理解正确的话,我可以将函数中的参数名称更改为其他的东西(例如,a,b而不是req,res),并且它仍然将分别包含request和response对象。

app.get('/', function (a, b) {
  b.send('GET request to homepage');
});

这是因为app.get方法/函数将它的第二个参数定义为一个回调函数,而什么参数将作为参数传递给该回调函数,对吗?

如果上面是真的,我只是在Express API文档中找不到描述该方法/函数的回调函数参数传递内容的文档。事实上,我几乎找不到文档来描述对于许多其他方法/函数传递到回调中的内容。我在哪里可以找到这些信息?我看错了信息是因为我弄错了一些术语吗?


共1个答案

匿名用户

对于那些正在访问这个三年前的老问题并希望得到答案的人(就像我一样),我希望下面的答案能启发你的心情;)

  • 平均回调(中间件函数)有三个参数(即req、res、next)
    • https://expressjs.com/en/guide/writing-middleware.html
    • https://expressjs.com/en/guide/error-handling.html#writing-error-handlers

    编写错误处理程序
    以与其他中间件函数相同的方式定义错误处理中间件函数,只是错误处理函数有四个参数,而不是三个:(err,req,res,next)。例如:

    app.use(function (err, req, res, next) {
      console.error(err.stack)
      res.status(500).send('Something broke!')
    })
    

    如果您为Express API使用TypeScript,则需要显式键入所有参数,否则编译器将隐式键入参数到Any,并在转换过程中崩溃。

    app.use((err: Error, req: Request, res: Response, next: NextFunction) => {
      console.error(err.stack)
      res.status(500).send('Something broke!')
    })