Démarrage d'un nouveau projet avec la commande 'nest new'. Fonctionne bien jusqu'à ce que j'y ajoute un fichier d'entité.
Vous avez l'erreur suivante:
import {Entity, Column, PrimaryGeneratedColumn} de 'typeorm';
^^^^^^
SyntaxError: impossible d'utiliser l'instruction d'importation en dehors d'un module
Qu'est-ce que je manque?
Ajout d'une entité au module:
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
annuaire? Si vous utilisez TypeORM, pouvez - vous montrer votreTypeOrmModule
importation dans leAppModule
deimports
tableau? Il y a peut-être quelque chose qui ne va pas avec la configuration que nous ne pouvons pas voirRéponses:
Mon hypothèse est que vous avez une
TypeormModule
configuration avec uneentities
propriété qui ressemble à ceci:ou comme
L'erreur que vous obtenez est due au fait que vous essayez d'importer un
ts
fichier dans unjs
contexte. Tant que vous n'utilisez pas webpack, vous pouvez l'utiliser à la place pour obtenir les fichiers correctsoù
join
est importé dupath
module. Maintenant, il__dirname
se résoudra ensrc
oudist
puis trouvera le fichier attenduts
oujs
respectivement. faites-moi savoir si un problème persiste.EDIT 1/10/2020
Ce qui précède suppose que la configuration est effectuée est un fichier compatible javascript (
.js
ou dans lesTypeormModule.forRoot()
paramètres passés). Si vous utilisez un à laormconfig.json
place, vous devez utiliserafin que vous utilisiez les fichiers js compilés et que vous n'ayez aucune chance d'utiliser les fichiers ts dans votre code.
la source
deno
est le seul exécuteur de code typographique natif.TypeORM
, bien qu'il utilise Typescript, fonctionne toujours avecNode
et le moteur d'exécution JavaScript. Peut-être que des améliorations peuvent être apportées pour accepter lests
fichiers et les compiler en JavaScript sous le capot, puis les supprimer pour que l'utilisateur final ne les voit pas, mais cela devrait être signalé comme un problème dans le référentiel git de TypeORMComme Jay McDoniel l'a expliqué dans sa réponse, le problème semble être la correspondance des motifs des fichiers d'entité dans le
ormconfig.json
fichier: probablement un fichier dactylographié (module) est importé à partir d'un fichier javascript (vraisemblablement un fichier dactylographié précédemment transposé).Il devrait suffire de supprimer un
ts
modèle de glob existant dans leormconfig.json
, afin que TypeORM ne charge que les fichiers javascript. Le chemin d'accès aux fichiers d'entité doit être relatif au répertoire de travail où le nœud est exécuté.la source
src
devrait probablement être changédist
car c'est là que se trouve le code exécutable après avoir été transposé en javascript.Dans la documentation TypeORM, j'ai trouvé une section spécifique pour Typescript .
Cette section dit:
Cela fonctionne avec ma configuration de fichier:
Ensuite, vous pouvez exécuter la commande generate.
la source
Vous devez avoir un quelque chose.module.ts pour chaque section de votre application. Cela fonctionne comme Angular. Ceci est configuré avec les résolveurs et le service GraphQL. REST est un peu différent avec un contrôleur. Chaque module aura probablement une entité et si GraphQL, projects.schema.graphql.
projects.module.ts
la source