Как синхронно загружать среды fastify-env?

Я работаю над микросервисом fastify и хотел бы использовать библиотеку fastify-env для проверки входных данных env и предоставления значений по умолчанию для всего приложения.

const fastify = require('fastify')()
fastify.register(require('fastify-env'), {
  schema: {
    type: 'object',
    properties: {
      PORT: { type: 'string', default: 3000 }
    }
  }
})
console.log(fastify.config) // undefined

const start = async opts => {
  try {
    console.log('config', fastify.config) // config undefined
    await fastify.listen(3000, '::')
    console.log('after', fastify.config)  // after { PORT: '3000' }

  } catch (err) {
    fastify.log.error(err)
    process.exit(1)
  }
}

start()

Как я могу использовать объект fastify.config перед запуском сервера?


person user1309424    schedule 07.06.2018    source источник
comment
Вы получили ответ на это? Вы все еще используете fastify-env?   -  person khushboo29    schedule 22.07.2020


Ответы (2)


fastify.register загружает плагины асинхронно AFAIK. Если вы хотите сразу использовать вещи из определенного плагина, используйте:

fastify
    .register(plugin)
    .after(() => {
        // This particular plugin is ready!
    });
person sarneeh    schedule 08.09.2018

Используйте ready() https://www.fastify.io/docs/latest/Server/#ready дождаться загрузки всех подключаемых модулей. Затем вызовите listen() с вашей переменной конфигурации.

try {
    await fastify.ready(); // will load all plugins
    await fastify.listen(...);
} catch (err) {
    fastify.log.error(err);
    process.exit(1);
}
person jdobber    schedule 14.05.2020