Comenzó un nuevo proyecto con el comando 'anidar nuevo'. Funciona bien hasta que le agregue un archivo de entidad.
Tengo el siguiente error:
import {Entity, Column, PrimaryGeneratedColumn} de 'typeorm';
^^^^^^
SyntaxError: no se puede usar la declaración de importación fuera de un módulo
¿Qué extraño?
Agregar entidad al 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
directorio? Si está utilizando TypeORM, ¿puede mostrar suTypeOrmModule
importación en la matriz deAppModule
'simports
? Puede haber algo mal con la configuración que no podemos verRespuestas:
Supongo que tiene una
TypeormModule
configuración con unaentities
propiedad que se ve así:o como
El error que está recibiendo es porque está intentando importar un
ts
archivo en unjs
contexto. Mientras no esté usando el paquete web, puede usar esto en su lugar para obtener los archivos correctosdonde
join
se importa desde elpath
módulo. Ahora__dirname
se resolverá ensrc
odist
y luego encontrará el archivo esperadots
o eljs
archivo respectivamente. avíseme si todavía hay un problema.EDITAR 1/10/2020
Lo anterior asume que la configuración se realiza es un archivo compatible con JavaScript (
.js
o en losTypeormModule.forRoot()
parámetros pasados). Si está usando unormconfig.json
en su lugar, debe usarpara que esté utilizando los archivos js compilados y no tenga la posibilidad de utilizar los archivos ts en su código.
fuente
deno
es el único corredor de código mecanografiado nativo.TypeORM
, aunque utiliza el Script mecanografiado, aún funciona conNode
el tiempo de ejecución de JavaScript. Tal vez se pueden hacer mejoras para aceptarts
archivos y compilarlos en JavaScript debajo del capó, luego eliminarlos para que el usuario final no los vea, pero eso debería mencionarse como un problema en el repositorio git de TypeORMComo explicó Jay McDoniel en su respuesta, el problema parece ser la coincidencia de patrones de los archivos de entidad en el
ormconfig.json
archivo: probablemente se importa un archivo (módulo) mecanografiado desde un archivo javascript (presumiblemente un archivo mecanografiado previamente transpilado).Debería ser suficiente eliminar un
ts
patrón de globo existente en elormconfig.json
, para que TypeORM solo cargue archivos javascript. La ruta a los archivos de entidad debe ser relativa al directorio de trabajo donde se ejecuta el nodo.fuente
src
probablemente se debe cambiar adist
ya que es donde el código ejecutable es después de haber sido transpiled a javascript.En la documentación de TypeORM, encontré una sección específica para Typecript .
Esta sección dice:
Esto funciona con mi archivo de configuración:
Luego puede ejecutar el comando generar.
fuente
Necesitas tener algo.module.ts para cada sección de tu aplicación. Funciona como angular. Esto se configura con los solucionadores GraphQL y el servicio. REST es un poco diferente con un controlador. Cada módulo probablemente tendrá una entidad y si GraphQL, projects.schema.graphql.
projects.module.ts
fuente