2016-11-07 36 views
1

每当我点击需要验证的路由时,我在控制台中收到警告消息。Promise已创建,但未从中返回。 Knex /书架

(节点:940)警告:承诺在处理程序在创建XXXXXX \程序\ CONFIG \ passport.js:15:19,但没有从它返回,见http://bluebirdjs.com/docs/warning-explanations.html#warning-a-promise-was-created-in-a-handler-but-was-not-returned-from-it 在.fetch(XXXXXX \ node_modules \蓝鸟\ JS \发布\ method.js:13:13)

我已配置的护照是这样的:

const JwtStrategy = require('passport-jwt').Strategy; 
const ExtractJwt = require('passport-jwt').ExtractJwt; 
const secret = process.env.SECRET; 
var opts = {} 

function passportConfig(db, passport) { 
    opts.jwtFromRequest = ExtractJwt.fromAuthHeader(); 
    opts.secretOrKey = secret; 
    passport.use(new JwtStrategy(opts, payloadCallback.bind(null, db))); 
} 

function payloadCallback(db, payload, done) { 
    new db.User({id: payload}).fetch() 
    .then(response => response.toJSON()) 
    .then(user => done(null, user)) 
    .catch(err => console.log(err)); 
} 

module.exports = passportConfig; 

任何帮助,将不胜感激。

+0

'payloadCallback'不返回任何 –

+0

@JaromandaX我认为,当我使用。那么(用户=>完成(NULL,用户)),这将是相同的话。那么(功能(用户) {return done(null,user)})。我对它进行了测试,以确保我仍然得到相同的警告。即使我使用“return new db.User .....” –

+0

哪里是.fetch()函数? –

回答

1

我修复了这个警告,通过替换第二个然后捕获.asCallback(完成)。

const JwtStrategy = require('passport-jwt').Strategy; 
const ExtractJwt = require('passport-jwt').ExtractJwt; 
const secret = process.env.SECRET; 
var opts = {} 

function passportConfig(db, passport) { 
    opts.jwtFromRequest = ExtractJwt.fromAuthHeader(); 
    opts.secretOrKey = secret; 
    passport.use(new JwtStrategy(opts, payloadCallback.bind(null, db))); 
} 

function payloadCallback(db, payload, done) { 
    new db.User({id: payload}).fetch() 
    .then(response => response.toJSON()) 
    .asCallback(done); 
} 

module.exports = passportConfig; 
+0

这也解决了我的问题。非常感谢!这是一个非常奇怪的。 – Lincoln