Соединение "по умолчанию" не найдено - TypeORM, NestJS и внешний пакет NPM - PullRequest
5 голосов
/ 18 апреля 2019

Я использую NestJ для создания пары приложений и хочу перенести код из NestInterceptor для внешнего пакета NPM, чтобы я мог использовать один и тот же перехватчик в нескольких приложениях.

Проблема в том, что тот же код, который работает при локальном использовании, просто перестает работать при перемещении во внешний пакет.

Вот код для перехватчика:

import { Injectable, NestInterceptor, CallHandler, ExecutionContext } from '@nestjs/common'
import { map } from 'rxjs/operators'
import { getManager } from 'typeorm'
import jwt_decode from 'jwt-decode'

@Injectable()
export class MyInterceptor implements NestInterceptor {
  entity: any

  constructor(entity: any) {
    this.entity = entity
  }

  async intercept(context: ExecutionContext, next: CallHandler): Promise<any> {

    const request = context.switchToHttp().getRequest()

    const repository = getManager().getRepository(this.entity)

    return next.handle().pipe(map((data) => data))
  }
}

Вот данный контроллер:

import { myInterceptor } from "../src/interceptors/interceptor.ts";

@UseInterceptors(new CompanyIdInterceptor(User))
export class UserController {
}

Это работает нормально, но если переместить файл во внешний пакет NPM и импортировать из него, как показано ниже:

import { myInterceptor } from "mynpmpackage";

Я получаю следующую ошибку:

[Nest] 24065   - 04/18/2019, 10:04 AM   [ExceptionsHandler] Connection "default" was not found. +26114ms
ConnectionNotFoundError: Connection "default" was not found.
    at new ConnectionNotFoundError (/home/andre/Services/npm-sdk/src/error/ConnectionNotFoundError.ts:8:9)
    at ConnectionManager.get (/home/andre/Services/npm-sdk/src/connection/ConnectionManager.ts:40:19)

Есть идеи, как это происходит и как ее решить?

1 Ответ

0 голосов
/ 19 апреля 2019

Возможно, это не ваша проблема, но у меня была похожая проблема при перемещении вещей во внешние пакеты с помощью TypeORM. Убедитесь, что все пакеты из родительского проекта используют одну и ту же версию пакета TypeORM.

В моем случае использование yarn why typeorm показало, что устанавливаются две разные версии. Один из них использовался для регистрации сущностей, в то время как инфраструктура подключалась к базе данных SQL с использованием другой версии, создавая это столкновение.

Проверьте свои версии с помощью yarn why [pkg-name] или, если вы используете NPM, попробуйте npx npm-why [pkg-name] или установите глобально с https://www.npmjs.com/package/npm-why.

...