我没有找到类似设置的问题......我该如何解决这个问题?
我使用节点,快速路由,请求从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]
答案 0 :(得分:0)
路由器期望一个函数值,但是你传入一个被调用的函数tokens()。试试令牌。
答案 1 :(得分:0)
您过早地调用tokens()
函数而不是仅仅传递对它的引用。改变这个:
router.get('/allTokens', isAuthenticated, tokens())
到此:
router.get('/allTokens', isAuthenticated, tokens)
请记住,任何时候将()
放在一个函数名后面,这意味着现在(立即)调用它。只要您自己传递函数名称,它就会传递对函数的引用,该函数可以在适当的时间稍后调用(这就是您想要的)。这是一个非常常见的错误。
由于调用tokens()
会返回undefined
,这就是您最终传递给router.get()
的原因,以及您收到特定错误消息的原因。