Iniciou um novo projeto com o comando 'nest new'. Funciona bem até eu adicionar o arquivo de entidade a ele.
Obteve o seguinte erro:
import {Entity, Column, PrimaryGeneratedColumn} de 'typeorm';
^^^^^^
SyntaxError: Não é possível usar a instrução de importação fora de um módulo
Do que sinto falta?
Adicionando Entidade ao Módulo:
import { Module } from '@nestjs/common';
import { BooksController } from './books.controller';
import { BooksService } from './books.service';
import { BookEntity } from './book.entity';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [TypeOrmModule.forFeature([BookEntity])],
controllers: [BooksController],
providers: [BooksService],
})
export class BooksModule {}
app.module.ts:
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Connection } from 'typeorm';
import { BooksModule } from './books/books.module';
@Module({
imports: [TypeOrmModule.forRoot()],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
src
diretório? Se você estiver usando TypeORM, você pode mostrar suaTypeOrmModule
importação naAppModule
'simports
array? Pode haver algo de errado com a configuração que não podemos verRespostas:
Minha suposição é que você tenha uma
TypeormModule
configuração com umaentities
propriedade que se parece com isso:ou como
O erro que você está recebendo é porque você está tentando importar um
ts
arquivo em umjs
contexto. Desde que você não esteja usando o webpack, use-o para obter os arquivos corretosonde
join
é importado dopath
módulo. Agora__dirname
será resolvido parasrc
oudist
e, em seguida, localize o arquivots
ou o esperado,js
respectivamente. informe-me se ainda houver um problema em andamento.EDIT 1/10/2020
O exemplo acima pressupõe que a configuração foi feita como um arquivo compatível com javascript (
.js
ou nosTypeormModule.forRoot()
parâmetros passados). Se você estiver usando umormconfig.json
, deve usarpara que você esteja usando os arquivos js compilados e não tenha chance de usar os arquivos ts no seu código.
fonte
deno
é o único corredor de código datilografado nativo.TypeORM
, enquanto usa o Typecript, ainda funciona comNode
o tempo de execução do JavaScript. Talvez possam ser feitas melhorias para aceitarts
arquivos e compilá-los em JavaScript, excluindo-os para que o usuário final não os veja, mas isso precisaria ser apresentado como um problema no repositório git TypeORMComo Jay McDoniel explicou em sua resposta, o problema parece ser a correspondência de padrões dos arquivos de entidade no
ormconfig.json
arquivo: Provavelmente, um arquivo de texto (módulo) datilografado é importado de um arquivo javascript (presumivelmente um arquivo datilografado anteriormente transpilado).Deve ser suficiente remover um
ts
padrão glob existente noormconfig.json
, para que TypeORM carregue apenas arquivos javascript. O caminho para os arquivos de entidade deve ser relativo ao diretório de trabalho em que o nó é executado.fonte
src
provavelmente deve ser alterado paradist
já que é onde o código executável é depois de ser transpiled para javascript.Na documentação do TypeORM, encontrei uma seção específica para o Typecript .
Esta seção diz:
Isso funciona com a minha configuração de arquivo:
Então você pode executar o comando generate.
fonte
Você precisa ter algo.module.ts para cada seção do seu aplicativo. Funciona como Angular. Isso é configurado com os resolvedores e serviços GraphQL. REST é um pouco diferente com um controlador. Cada módulo provavelmente terá uma entidade e, se GraphQL, projects.schema.graphql.
projects.module.ts
fonte