首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用typeorm实现typedi时ConnectionManager错误

使用typeorm实现typedi时ConnectionManager错误
EN

Stack Overflow用户
提问于 2021-09-19 14:06:33
回答 1查看 682关注 0票数 1

我试着和typedi一起用打字机,但有一些问题。我想对ORM使用typeorm,对GraphQL使用typegraphql,对typedi使用DI。现在,我正在尝试用typeorm实现typedi,但是我遇到了一些问题:

错误我得到了

代码语言:javascript
复制
{
  "message": "Cannot get Connection with name \"default\" from the ConnectionManager. Make sure you have created the connection and called \"useContainer(Container)\" in your application before establishing a connection and importing any entity into TypeORM.",
  "exception": {
    "connectionName": "default",
    "name": "ManagerNotFoundError",
    "stacktrace": [
      "ManagerNotFoundError: Cannot get Connection with name \"default\" from the ConnectionManager. Make sure you have created the connection and called \"useContainer(Container)\" in your application before establishing a connection and importing any entity into TypeORM."
    ]
  }
}

但是,我已经将useContainer(Container)放在连接设置之上。

src/index.ts (条目文件)

代码语言:javascript
复制
import './utils/env'
import 'reflect-metadata'
import { Server } from './server'
import { Database } from './database'
import logger from './utils/logger'
import { Container } from 'typeorm-typedi-extensions'
import { useContainer } from 'typeorm'

const server = new Server()
const database = new Database()

useContainer(Container)

void database
  .connect()
  .then(() => {
    logger.info('Database connected')
    void server.listen().then((server) => {
      const { port } = server.address() as { port: number }
      logger.info(`Server started on port ${port}`)
    })
  })
  .catch((reason) => {
    throw new Error(`Databse Error: ${reason as string}`)
  })

这是我的userRepository文件

src/entities/user/UserRepository.ts

代码语言:javascript
复制
@Service()
@EntityRepository(User)
export class UserRepository extends Repository<User> {
  // (...)
}

这是我的UserService文件

src/graphql/user/UserService.ts

代码语言:javascript
复制
@Service()
export default class UserService {
    @InjectRepository(User)
    private readonly userRepository: UserRepository

    // (...methods)
}

最后,这是我的UserResolver文件

src/graphql/user/UserResolver.ts

代码语言:javascript
复制
@Service()
@Resolver(() => User)
export class UserResolver {
  @Inject()
  private readonly userService: UserService

  (...)
}
EN

回答 1

Stack Overflow用户

发布于 2021-09-19 17:57:54

解决::node_modules/typeorm-typedi-extensions/cjs/container-registrations.const.js

第10行

来自

typedi_1.Container.set({ id: typeorm_1.ConnectionManager, type: typeorm_1.ConnectionManager });

typedi_1.Container.set({ id: typeorm_1.ConnectionManager, type: typeorm_1.ConnectionManager, global: true });

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69243996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档