2
respostas

[Bug] Erro ao dar comando de migration:show (Missing initializer in const declaration)

Segui o passo a passo do vídeo porem o comando "typeorm-ts-node-esm -d src/db/data-source-cli.ts migration:show" parece dar algum problema na declaração de constantes. Depois de testar e procurar algumas soluções encontrei um comando que funciona aparentemente (npx ts-node ./node_modules/typeorm/cli.js -d src/db/data-source-cli.ts migration:show) ao usar ts-node para ajudar o TypeORM a interpretar o arquivo porém gostaria de saber o que esta acontecendo para que o comando do video não funcione. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Olá, Rafael! Tudo bem?

O erro "Missing initializer in const declaration" geralmente ocorre quando há um problema na sintaxe ou na configuração do ambiente. Aqui estão algumas sugestões para resolver o problema:

  1. Verifique o Node.js e TypeScript: Certifique-se de que você está usando versões compatíveis do Node.js e TypeScript com o typeorm. Atualizações podem resolver problemas de compatibilidade.

  2. Configuração do tsconfig.json: Verifique se o seu tsconfig.json está configurado corretamente. Certifique-se de que as opções module e target estejam definidas de acordo com o que o typeorm espera (geralmente esnext para module).

  3. Dependências: Confira se todas as dependências necessárias estão instaladas corretamente. Às vezes, reinstalar as dependências pode resolver problemas estranhos:

    rm -rf node_modules
    npm install
    
  4. Configuração do data-source-cli.ts: Certifique-se de que todas as variáveis de ambiente usadas no arquivo data-source-cli.ts estejam definidas corretamente. Um valor undefined pode causar problemas.

  5. Uso do npx: Como você mencionou que o comando com npx ts-node funciona, pode ser uma boa alternativa continuar usando esse comando, já que ele parece resolver o problema de interpretação do arquivo.

Espero ter ajudado e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Por aqui tive o mesmo erro. Aí com ajuda de IA, cheguei em algumas conclusões:

  • O erro estava sendo causado por conta do código estar baseado em 'esm' e meu tsconfig.json estava com "module":"CommomJS";
  • Tentei até mudar para "module": "ESNext" para tentar adaptar, mas aí pipocou mais erros import na minha aplicação que já funcionava;
  • Aí então a IA (gpt) me sugeriu testar comando com:
ts-node ./node_modules/typeorm/cli

O que funcionou...

Logo ela me sugeriu os seguintes scripts já mais "certos" no package.json:

    "typeorm": "ts-node ./node_modules/typeorm/cli",
    "migration:show": "yarn typeorm migration:show --dataSource src/db/data-source-cli.ts",
    "migration:generate": "yarn typeorm migration:generate src/db/migrations/cria-tabelas --dataSource src/db/data-source-cli.ts",
    "migration:run": "yarn typeorm migration:run --dataSource src/db/data-source-cli.ts"

Isso ficou um pouco ruim para entender a lógica exatamente do que estou fazendo. Vou ter que ter este projeto sempre disponivel para pegar essa referência de código.

Outra coisa que não é explicado pelo professor é que no momento em que as tabelas já haviam sido rodadas anteriormente com "synchronize: true", após apagar, deveríamos ir lá e apagar as tabelas no Banco de Dados, senão a migration não funciona (ou forçar uma mudança na entidade, por exemplo adicionei uma nova coluna "temp" e rodei a migration e logo após, removi a coluna da Entity e rodei novamente.)