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 {}

srcdirectorio? Si está utilizando TypeORM, ¿puede mostrar suTypeOrmModuleimportación en la matriz deAppModule'simports? Puede haber algo mal con la configuración que no podemos verRespuestas:
Supongo que tiene una
TypeormModuleconfiguración con unaentitiespropiedad que se ve así:o como
El error que está recibiendo es porque está intentando importar un
tsarchivo en unjscontexto. Mientras no esté usando el paquete web, puede usar esto en su lugar para obtener los archivos correctosdonde
joinse importa desde elpathmódulo. Ahora__dirnamese resolverá ensrcodisty luego encontrará el archivo esperadotso eljsarchivo 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 (
.jso en losTypeormModule.forRoot()parámetros pasados). Si está usando unormconfig.jsonen 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
denoes el único corredor de código mecanografiado nativo.TypeORM, aunque utiliza el Script mecanografiado, aún funciona conNodeel tiempo de ejecución de JavaScript. Tal vez se pueden hacer mejoras para aceptartsarchivos 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.jsonarchivo: probablemente se importa un archivo (módulo) mecanografiado desde un archivo javascript (presumiblemente un archivo mecanografiado previamente transpilado).Debería ser suficiente eliminar un
tspatró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
srcprobablemente se debe cambiar adistya 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