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()
的内容,因此您会收到特定的错误消息。
我还没有发现类似设置的问题...我该如何解决这个问题?
我正在使用节点、快速路由、请求从 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()
的内容,因此您会收到特定的错误消息。