typeorm getConnection() не может найти соединение по умолчанию

#connection #typeorm #nrwl-nx

#соединение #typeorm #nrwl-nx

Вопрос:

У меня есть проект NX mono repo, в котором я хочу использовать typeorm. Файл конфигурации ormconfig.json находится в корне рабочей области (в той же папке package.json), и это содержимое:

 {
    "name": "default",
    "type": "sqlite",
    "database": "data/db.sql",
    "logging": true,
    "entities": ["libs/database/src/entities/*.entity.{ts,js}"],
    "migrations": ["libs/database/src/migrations/*.{ts,js}"],
    "cli": {
        "entitiesDir": "libs/database/src/entities",
        "migrationsDir": "libs/database/src/migrations",
        "subscribersDir": "libs/database/src/subscribers"
    }
}
  

Как вы можете видеть, объекты находятся в библиотеке базы данных.

Эта конфигурация отлично работает для миграции, но когда я пытаюсь вызвать getConnection() (из любого места, например, из приложения узла в той же рабочей области) Я получаю сообщение об ошибке ConnectionNotFoundError: Connection "default" was not found.

Комментарии:

1. Я также пытаюсь заставить его работать с минимальным примером репозитория. Я изо всех сил пытаюсь запустить миграцию при запуске. Не мог бы кто-нибудь, пожалуйста, взглянуть на эту проблему? (Ссылка на образец репозитория предоставлена) github.com/typeorm/typeorm/issues/8219

Ответ №1:

Я также использую моно-репозитории для своих проектов. По моему опыту, после поиска той же проблемы, что и несколько месяцев назад, я обнаружил, что вы должны поместить ormconfig.json файл в верхний каталог вашего проекта. Например, если ваш каталог выглядит следующим образом:

 project/
    packages/
        backend/
        common/
        frontend/
  
  • И ваш ormconfig.json файл находится в project/packages/backend/ каталоге, тогда вы должны переместить его в верхний или родительский каталог, который есть project/ .

  • Убедитесь также, что ваши объекты или миграции показывают правильное расположение вашей папки entities в пути / дереве каталога. Как я вижу, вы сначала создаете и компилируете свой код, а затем запускаете его node . Итак, если это сценарий, и вы не используете такие инструменты, как ts-node , то вы правильно разместили каталог Entities или Migrations, чтобы указать на папку lib / dist / build .

  • Я также счел полезным использовать эту служебную функцию от Ben Awad для подключения TypeORM к моей базе данных. Надеюсь, это вам тоже поможет!

Комментарии:

1. Здравствуйте, спасибо за ваше предложение. Я не знаю, почему, но когда я использую getConnection его, он не может поместить мой файл ormconfig.json в ту же папку package.json . Вместо этого, если я использую createConnection() его, он работает.

2. Да, интересно, почему это не так. Вы можете сообщить об этом как о проблеме в своем репозитории GitHub. Кроме того, если вы нашли мой ответ полезным, пожалуйста, оставьте свой голос или примите его, я был бы очень признателен.