2016-11-07 3 views
1

인증이 필요한 경로를 밟을 때마다 콘솔에 경고 메시지가 나타납니다.Promise가 생성되었지만 반환되지 않았습니다. Knex/Bookshelf

(노드 : 940) 경고 : 약속이에서 핸들러에서 만든 XXXXXX \ 응용 프로그램 \ 설정 \ passport.js : 15 : 19 만에서 반환되지는 .fetch에서 http://bluebirdjs.com/docs/warning-explanations.html#warning-a-promise-was-created-in-a-handler-but-was-not-returned-from-it 를 (참조 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

두 번째 then을 바꾸고 .asCallback (완료)으로 catch하여이 경고를 해결했습니다.

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