1
resposta

[Dúvida] ERRO | InjectRepository Argument of type 'undefined' is not assignable to parameter of type 'string | symbol'.

Estou recebendo o seguinte erro no produto.service.ts, na linha @InjectRepository(ProdutoEntity):

Unable to resolve signature of parameter decorator when called as an expression.
  Argument of type 'undefined' is not assignable to parameter of type 'string | symbol'.ts(1239)

Esse é o meu produto entity:

import {
  Entity,
  Column,
  CreateDateColumn,
  UpdateDateColumn,
  DeleteDateColumn,
  PrimaryGeneratedColumn,
  OneToMany,
} from 'typeorm';
import { ProdutoImagemEntity } from './produto-imagem.entity';
import { ProdutoCaracteristicaEntity } from './produto-caracteristica.entity';
import { ItemPedidoEntity } from '../pedido/itempedido.entity';

@Entity({ name: 'produtos' })
export class ProdutoEntity {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @Column({ name: 'nome', length: 100, nullable: false })
  nome: string;

  @Column({ name: 'valor', nullable: false })
  valor: number;

  @Column({ name: 'quantidade_disponivel', nullable: false })
  quantidadeDisponivel: number;

  @Column({ name: 'descricao', length: 255, nullable: false })
  descricao: string;

  @Column({ name: 'categoria', length: 100, nullable: false })
  categoria: string;

  @CreateDateColumn({ name: 'created_at' })
  createdAt: string;

  @UpdateDateColumn({ name: 'updated_at' })
  updatedAt: string;

  @DeleteDateColumn({ name: 'deleted_at' })
  deletedAt: string;

  @OneToMany(
    () => ProdutoImagemEntity,
    (produtoImagemEntity) => produtoImagemEntity.produto,
    { cascade: true, eager: true },
  )
  imagens: ProdutoImagemEntity[];

  @OneToMany(
    () => ProdutoCaracteristicaEntity,
    (produtoCaracteristicaEntity) => produtoCaracteristicaEntity.produto,
    { cascade: true, eager: true },
  )
  caracteristicas: ProdutoCaracteristicaEntity[];

  @OneToMany(() => ItemPedidoEntity, (itemPedido) => itemPedido.produto)
  itensPedido: ItemPedidoEntity[];
}

O que estou perdendo aqui?

1 resposta

Olá, Renato! Parece que você está com um problema com o decorador @InjectRepository no Nest.js.

O erro que você está recebendo geralmente ocorre quando o TypeORM não consegue encontrar a entidade que você está tentando injetar. Isso pode acontecer se a entidade não foi importada corretamente ou se não foi incluída no array de entidades no módulo que configura o TypeORM.

No seu caso, você está tentando injetar a ProdutoEntity. Vamos verificar se tudo está correto:

  1. Certifique-se de que você está importando corretamente a ProdutoEntity no arquivo onde está ocorrendo o erro. Deve ser algo como: import { ProdutoEntity } from './produto.entity';

  2. Verifique se a ProdutoEntity está incluída no array de entidades no módulo que configura o TypeORM. Deve ser algo parecido com isso:

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'postgres',
      host: 'localhost',
      port: 5432,
      username: 'test',
      password: 'test',
      database: 'test',
      entities: [ProdutoEntity],
      synchronize: true,
    }),
  ],
})
export class AppModule {}

Se essas verificações não resolverem seu problema, por favor, compartilhe o código do módulo onde você está tentando injetar a ProdutoEntity e o código do módulo que configura o TypeORM para que possamos ajudar melhor.

Espero ter ajudado e bons estudos!