Зависимости, не внедряемые в NestJS с помощью Serverless и AWS - PullRequest
1 голос
/ 02 июня 2019

Все,

Я пытаюсь настроить свое первое приложение NestJS.Он поддерживается Serverless на AWS.

Я создал простой контроллер, имеющий службу в качестве зависимости.Когда я обращаюсь к конечной точке с помощью моего HTTP-клиента, объект, который должен содержать экземпляр службы, равен undefined.Я не могу заставить это работать.Не могли бы вы помочь?

handler.ts

import { Context, Handler } from 'aws-lambda';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './src/module';
import { Server } from 'http';
import { ExpressAdapter } from '@nestjs/platform-express';
import * as serverless from 'aws-serverless-express';
import * as express from 'express';
import {DB} from './src/libs/db';

let cachedServer: Server;

function bootstrapServer(): Promise<Server> {
  const expressApp = express();
  const adapter = new ExpressAdapter(expressApp);
  return NestFactory.create(AppModule, adapter)
    .then(app => app.enableCors())
    .then(app => app.init())
    .then(() => DB.connect())
    .then(() => serverless.createServer(expressApp));
}

export const handle: Handler = (event: any, context: Context) => {
  if (!cachedServer) {
    bootstrapServer().then(server => {
      cachedServer = server;
      return serverless.proxy(server, event, context);
    });
  } else {
    return serverless.proxy(cachedServer, event, context);
  }
};

module.ts

import { Module } from '@nestjs/common';
import { EventController } from './event.controller';
import { EventService } from './event.service';

@Module({
  controllers: [EventController],
  providers: [EventService],
})
export class AppModule {}

событие.service.ts

import { Injectable } from '@nestjs/common';

interface Event{}

@Injectable()
export class EventService {
  create(event: Event) {
    return {
      id: Date.now()
    }
  }
}

event.controller.ts

import { Controller, Post, Body } from '@nestjs/common';
import { EventService } from './event.service';

interface Event { }

@Controller('event')
export class EventController {
  constructor(private readonly eventService: EventService) { }

  @Post()
  async create(@Body() req)

{
    this.eventService.create(req);
  }
}

То есть this.eventService всегда undefined.Что не так с этой реализацией?

1 Ответ

0 голосов
/ 30 июня 2019

Возможно, вам не хватает строки из tsconfig, добавьте это ниже:

"emitDecoratorMetadata": true

Благодарность Богу Нестжа. Ответ г-на Камиля: https://stackoverflow.com/a/50121886/6301493

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...