TypeORM Ошибка типа: не удается прочитать свойство ‘findOne’ неопределенного

#javascript #node.js #typescript #typeorm

#javascript #node.js #typescript #typeorm

Вопрос:

Я реализую TypeORM с помощью Typescript и пытаюсь создать сервис, который расширяет репозиторий TypeORM:

 export class UserService extends Repository<User> {

  // ... my other service methods

}
 

После этого я пытаюсь вызвать метод репозитория findOne из service ( userService.findOne(...) ), но у меня ошибка TypeORM:

 TypeError: Cannot read property 'findOne' of undefined
    at UserService.Repository.findOne (node_modules/typeorm/repository/Repository.js:174:29)
 

В библиотеке TypeORM в этой строке я понимаю, что manager значение не определено:

 Repository.prototype.findOne = function (optionsOrConditions, maybeOptions) {
    return this.manager.findOne(this.metadata.target, optionsOrConditions, maybeOptions);
};
 

Ниже приведена моя конфигурация TypeORM:

 createConnection({
    type: "mysql",
    url: "...",
    synchronize: true,
    logging: false,
    entities: [ User ],
    cli: { entitiesDir: "src/models" },
})
 

У кого-нибудь была такая же проблема, или я что-то пропустил в конфигурации?
Заранее благодарю вас!! 🙂

Ответ №1:

У меня возникла эта проблема, потому что моя конфигурация ormconfiguration не учитывала файлы js при запуске в рабочей среде, прежде чем я:

  entities: ["${rootDir}/entities/**/*.ts"],
 migrations: ["${rootDir}/database/migrations/**/*.ts"],
 subscribers: ["${rootDir}/database/subscribers/**/*.ts"],
 

После:

  entities: ["${rootDir}/entities/**/*.{js,ts}"],
 migrations: ["${rootDir}/database/migrations/**/*.{js,ts}"],
 subscribers: ["${rootDir}/database/subscribers/**/*.{js,ts}"],
 

Обратите внимание на разницу .ts и .{js,ts}