typedi + fastify-异步初始化服务

时间:2020-07-13 14:31:38

标签: node.js typescript fastify

我正在研究基于nodejs fastify的应用程序服务,并使用typedi进行依赖项注入。

我使用的某些服务需要异步初始化。

MyService.ts

export class MyService {
   constructor() {

   }

   public async init() {
     ....
   }
}

我正在尝试在应用程序启动时初始化服务,以便任何执行Container.get(MyService)的服务都可以获取MyService的此初始化实例

app.ts

export default async function(fastify: FastifyInstance, opts: Options, next: Function) {
  // This loads everything under routes 
  fastify.register(autoload, {
    dir: path.join(__dirname, "routes"),
    options: opts,
    includeTypeScript: true,
  });

  await Container.get(MyService);

  next();
}

server.ts

import app from "./app";

const server = fastify({
  logger: logger
});

server.register(oas, docs);

server.register(app);

server.ready(err => {
  if (err) throw err;
  server.oas();
});

server.listen(config.port, (err) => {
    if (err) {
      server.log.error(err);
      process.exit(1);
    }
    server.log.info(`server listening on ${server.server.address()}`);
  });
  
export default server;

我初始化MyService的尝试失败。

MissingProvidedServiceTypeError [ServiceNotFoundError]: Cannot determine a class of the requesting service "undefined"

有人暗示我在做什么错吗?我是nodejs的新手,非常感谢适合这种情况的示例代码。

编辑 我尝试导入

  Container.import([CmkeService]);

MissingProvidedServiceTypeError [ServiceNotFoundError]:无法确定请求服务的类“未定义”

0 个答案:

没有答案