2017-01-31 16 views
0

koa-jsonwebtokenで使用する秘密をロードしようとしています。モジュールの非同期的に読み込みを行う方法

import jwt, { fromAuthorizationHeader } from 'koa-jsonwebtoken'; 
import {serverCredentials} from './auth' 
//... 
console.log('loaded serverCredentials' + JSON.stringify(serverCredentials))  
app.use(jwt({ secret: serverCredentials.shared, extractToken: fromAuthorizationHeader })); 

と私の認証は、次のとおりです:

は、ここに私のKOAのサーバーからreleventビットだ

import ty from 'then-yield' 
import md5 from 'md5' 
import Promise from 'bluebird' 
const fs = Promise.promisifyAll(require('fs')); 

const serverCredentials = ty.spawn(function*() { 
    let src 
    try { 
    console.log('trying') 
    src = yield fs.readFileAsync('./serverCredentials.json','utf8') 
    } catch(e) { 
    console.error('Error when opening serverCredentials file: ' + e.message); 
    throw e 
    } 
    console.log('serverCredentials: ' + src) 
    return JSON.parse(src) 
}) 

export {serverCredentials} 

が、私のログは言う:代わりにサーバキーの

trying 
loaded serverCredentials{"isFulfilled":false,"isRejected":false} 

を。

+0

、あなたは 'fs.readFileAsync( '../ serverCredentials.json'、 'UTF8')を試してみました、その後(機能(RES){はconsole.log。 (res)}) '? – JorgeObregon

+0

最後の行をコメントアウトしてENOENTのキャッチをトリガーしましたが、私はパスを修正しましたが、今でも同じ問題があります。更新する –

+0

あなたはBluebirdを使用しているので、なぜ「Promise.coroutine」ではなく「yield」を選択するのですか?そして、あなたがtranspilerを使用しているなら、 'async' /' await'をすぐに使うのはどうですか? – Bergi

答えて

1

serverCredentialsはJSON解析オブジェクトの約束です。あなたはそれを待つ必要があります。debugginの目的のために

import jwt, { fromAuthorizationHeader } from 'koa-jsonwebtoken'; 
import {serverCredentials as credentialsPromise} from './auth'; 

credentialsPromise.then(serverCredentials => { 
    console.log('loaded serverCredentials' + JSON.stringify(serverCredentials))  
    app.use(jwt({secret: serverCredentials.shared, extractToken: fromAuthorizationHeader})); 
}); 
+0

ああ、大丈夫です。論理的に見える。私は本当にこれを書いてラウンドをスピンして、1秒間の約束の基礎を忘れてしまった。ありがとうございました。 –

関連する問題