Neues Projekt mit dem Befehl 'nest new' gestartet. Funktioniert einwandfrei, bis ich eine Entitätsdatei hinzufüge.
Erhielt folgenden Fehler:
{Entity, Column, PrimaryGeneratedColumn} aus 'typeorm' importieren;
^^^^^^
SyntaxError: Importanweisung kann nicht außerhalb eines Moduls verwendet werden
Was vermisse ich?
Entität zum Modul hinzufügen:
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
Verzeichnis? Wenn Sie TypeORM verwenden, können Sie zeigen IhrenTypeOrmModule
Import in demAppModule
‚simports
Array? Möglicherweise stimmt etwas mit der Konfiguration nicht, die wir nicht sehen könnenAntworten:
Ich gehe davon aus, dass Sie eine
TypeormModule
Konfiguration mit einerentities
Eigenschaft haben, die folgendermaßen aussieht:oder wie
Der Fehler, den Sie erhalten, ist, dass Sie versuchen, eine
ts
Datei in einenjs
Kontext zu importieren . Solange Sie kein Webpack verwenden, können Sie dieses stattdessen verwenden, um die richtigen Dateien zu erhaltenwo
join
wird aus dempath
Modul importiert . Jetzt__dirname
wird insrc
oder aufgelöstdist
und dann die erwartetets
bzw.js
Datei gefunden. Lassen Sie mich wissen, ob noch ein Problem vorliegt.EDIT 1/10/2020
Das Obige setzt voraus, dass die Konfiguration eine Javascript-kompatible Datei ist (
.js
oder in denTypeormModule.forRoot()
übergebenen Parametern). Wenn Sie stattdessen einormconfig.json
verwenden, sollten Sie verwendenDamit Sie die kompilierten js-Dateien verwenden und keine Chance haben, die ts-Dateien in Ihrem Code zu verwenden.
quelle
deno
ist der einzige native Typoskript-Code-Runner.TypeORM
, während es Typescript verwendet, funktioniert immer noch mitNode
und der JavaScript-Laufzeit. Möglicherweise können Verbesserungen vorgenommen werden, umts
Dateien zu akzeptieren und sie unter der Haube in JavaScript zu kompilieren und dann zu löschen, damit der Endbenutzer sie nicht sieht. Dies müsste jedoch als Problem im TypeORM-Git-RepositoryWie Jay McDoniel in seiner Antwort erklärte, scheint das Problem der Mustervergleich von Entitätsdateien in einer
ormconfig.json
Datei zu sein: Wahrscheinlich wird eine Typoskriptdatei (Modul) aus einer Javascriptdatei (vermutlich eine zuvor transpilierte Typoskriptdatei) importiert.Es sollte ausreichen, ein vorhandenes
ts
Glob-Muster im zu entfernenormconfig.json
, damit TypeORM nur Javascript-Dateien lädt. Der Pfad zu den Entitätsdateien sollte relativ zum Arbeitsverzeichnis sein, in dem der Knoten ausgeführt wird.quelle
src
sollte wahrscheinlich geändert werden,dist
da sich dort der ausführbare Code befindet, nachdem er in Javascript transpiliert wurde.In der TypeORM-Dokumentation habe ich einen bestimmten Abschnitt für Typescript gefunden .
Dieser Abschnitt sagt:
Dies funktioniert mit meiner Dateikonfiguration:
Anschließend können Sie den Befehl generate ausführen.
quelle
Sie müssen für jeden Abschnitt Ihrer App ein Something.module.ts haben. Es funktioniert wie Angular. Dies wird mit GraphQL-Resolvern und -Dienst eingerichtet. REST ist bei einem Controller etwas anders. Jedes Modul wird wahrscheinlich eine Entität haben und wenn GraphQL, projects.schema.graphql.
projects.module.ts
quelle