2016-11-07 67 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