1

我正在开发 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在服务器启动之前使用该对象?

4

2 回答 2

2

使用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);
}
于 2020-05-14T20:49:46.373 回答
-1

fastify.register异步加载插件AFAIK。如果您想立即使用特定插件中的内容,请使用:

fastify
    .register(plugin)
    .after(() => {
        // This particular plugin is ready!
    });
于 2018-09-08T17:18:04.063 回答