表示下一个抛出错误,因为下一个未定义

express next throwing error as next is not defined

我试图在 app.post() 方法的回调中传递一些预定义的函数。我收到 next is not defined 错误。下面是我的代码。请指出我哪里做错了或者我在这里遗漏了任何概念?

var express = require('express');

var app = express()

app.post('/api/signup', function(req, res) {
validateParams(req, res, next),
dbCall(req, res, next),
sendResponse(req, res)
})

我在其中定义并导入了每个函数,并在处理后返回 next()。

我的 validateParams 函数如下:

validateParams = function(req, res, next) {
    console.log("at validator ", req);
    next();
}

module.exports = validateParams;

我的 dbCall 函数如下:

dbCall = function(req, res, next) {
    console.log("at dbCall ", req);
    next();
}

module.exports = dbCall;

我的 sendResponse 函数如下:

sendResponse = function(req, res) {
    console.log("at dbCall ", res);
    res.send("Response sent successfully");
}

module.exports = sendResponse;

您可能忘记在回调中添加 next 参数。

app.post('/api/signup', function(req, res, next) {
  validateParams(req, res, next),
  dbCall(req, res, next),
  sendResponse(req, res)
})

我认为您正在尝试使用 validateParams(req, res, next)dbCall(req, res, next) 作为中间件函数。在这种情况下,您需要这样的东西:

const validateParams = (req, res, next) => {
  // do stuff here
  next();
}

const dbCall = (req, res, next) => {
  // do stuff here
  next();
}

app.post('/api/signup', validateParams, dbCall, function(req, res) {

sendResponse(req, res)
})

你可以阅读更多here