typedi + fastify - асинхронно инициализировать сервис - PullRequest
0 голосов
/ 13 июля 2020

Я работаю над службой приложений на основе nodejs fastify и использую typedi для внедрения зависимостей.

Некоторые службы, которые я использую, требуют asyn c инициализации.

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 и был бы очень признателен за образец кода, который подходит для этого сценария.

Edit Я пробовал импортировать

  Container.import([CmkeService]);

MissingProvidedServiceTypeError [ServiceNotFoundError]: невозможно определить класс запрашивающая услуга "undefined"

...