[英]How to read file asynchronously for module with then-yield
I'm trying to load a secret for use with koa-jsonwebtoken . 我正在尝试加载与koa-jsonwebtoken一起使用的秘密。
here's the relevent bits from my koa server: 这是我的Koa服务器中的相关事件位:
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 }));
and my auth is: 而我的身份验证是:
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}
but my log says: 但我的日志说:
trying
loaded serverCredentials{"isFulfilled":false,"isRejected":false}
instead of the server key. 而不是服务器密钥。
serverCredentials
is a promise for your JSON-parsed object. serverCredentials
是对JSON解析对象的承诺。 You will need to wait for it: 您将需要等待:
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}));
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.