Node Error: Route.get() requires callback functions but got a [object Undefined]

Node Error: Route.get() requires callback functions but got a [object Undefined]

我还没有发现类似设置的问题...我该如何解决这个问题?

我正在使用节点、快速路由、请求从 api 调用令牌,以及异步系列来保持一切清洁。我通过仅显示异步系列中的一个函数来简化代码。

routes.js

var express = require('express')
var router = express.Router()
var isAuthenticated = require("./passportAuth.js")
var tokens = require('./tokens')

module.exports = function() {
  router.get('/allTokens', isAuthenticated, tokens())
  return router
}

./tokens.js

var request = require("request")
var async = require('async')

module.exports = function(req, res, next) {

  var allTokens = function(callback) {
    request('url', function(err, res, body) {
      if(err) return callback(err, null)
      return callback(null, 'success')
    })
  }

  var asyncFinally = function(err, results) {
    if(err) return next(err)
    res.send(results)
  }

  async.series([allTokens], asyncFinally)
}

错误信息

Route.get() requires callback functions but got a [object Undefined]

路由器需要一个函数值,但您传递的是一个被调用的函数 tokens()。试试代币。

您过早地调用了 tokens() 函数,而不是仅仅传递对它的引用。改变这个:

router.get('/allTokens', isAuthenticated, tokens())

对此:

router.get('/allTokens', isAuthenticated, tokens)

请记住,任何时候在函数名称后加上 () 都表示现在(立即)调用它。任何时候你只传递函数名称本身,它只是传递一个对函数的引用,稍后可以在适当的时间调用它(这就是你想要的)。这是一个很常见的错误。

自调用 tokens() returns undefined 以来,这就是您最终传递给 router.get() 的内容,因此您会收到特定的错误消息。