Я пытаюсь загрузить секрет для использования с koa-jsonwebtoken.Как читать файл асинхронно для модуля с then-yield
вот Релевент биты от моего коа сервера:
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 }));
и мой аутентификации является:
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}
вместо ключа сервера.
для целей debuggin, вы пробовали 'fs.readFileAsync ('../ serverCredentials.json', 'utf8'), тогда (функция (Рез) {console.log (res)}) '? – JorgeObregon
, комментируя последнюю строку, и это запустило catch для ENOENT .. но я исправил путь сейчас и все еще ту же проблему. обновление –
Учитывая, что вы используете Bluebird, зачем выбирать вместо этого «Promise.coroutine»? И учитывая, что вы используете транспилер, почему бы просто не использовать 'async' /' await' сразу? – Bergi