Nest JS контроллер не сопоставлен - PullRequest
9 голосов
/ 18 июня 2020

Итак, у меня есть API, который будет развернут в контейнере docker. В этом API есть контроллер authentications, простой и не особенный.

Когда я запускаю API в режиме разработки на моем локальном компьютере, контроллер аутентификации будет найден, и все будет работать нормально. То же самое для сборки и запуска на моем локальном компьютере. Но когда я докерирую проект и запускаю его на виртуальной машине, я не могу получить доступ к контроллеру аутентификации. Все остальные контроллеры работают в поиске, но контроллер аутентификации не существует.

При просмотре журналов docker никакой контроллер аутентификации не отображается. И локальные, и созданные образы docker должны содержать одни и те же файлы проекта.

Контроллер аутентификации:

import {
  Controller,
  Post,
  Delete,
  UseGuards,
  Request,
  Body,
} from '@nestjs/common';

import { AuthenticationsService } from './authentications.service';
import { JwtAuthGuard } from '../shared/guards/jwtAuth.guard';
import { SignInDTO } from './dtos/addGraphNodeToGraphByGraphId.dto';

@Controller('authentications')
export class AuthenticationsController {
  constructor(
    private readonly authenticationsService: AuthenticationsService,
  ) {}

  @Post()
  public signIn(@Body() { username, password }: SignInDTO): Promise<string> {
    return this.authenticationsService.signIn(username, password);
  }

  @Delete()
  @UseGuards(JwtAuthGuard)
  public signOut(@Request() request): Promise<void> {
    return this.authenticationsService.signOut(
      request.encodedToken,
      request.user.tokenExpirationSinceEpochInMilliseconds,
    );
  }
}

Ошибка:

{
    "statusCode": 404,
    "message": "Not Found",
    "error": "Cannot POST /authentications"
}

Что могло привести к тому, что аутентификация контроллер не будет отображаться?

Ответы [ 3 ]

4 голосов
/ 18 июня 2020

А в модуль ставили контроллер?

@Module({
  controllers: [AuthenticationController],
})
export class AppModule {}
3 голосов
/ 26 июня 2020

Наконец выяснилось, что некоторые пакеты из Nest JS имеют версии 6 и 7. Так что они, вероятно, прерывают друг друга. Индикатором был этот поток предупреждений: введите описание изображения здесь

После запуска nest update -f каждый контроллер был отображен, как и предполагалось.

0 голосов
/ 28 июня 2020

вы добавили его в свой модуль приложения? Модуль аутентификации

...