Начал новый проект с помощью команды 'nest new'. Работает нормально, пока я не добавлю к нему файл сущности.
Получил следующую ошибку:
import {Entity, Column, PrimaryGeneratedColumn} из 'typeorm';
^^^^^^
SyntaxError: Невозможно использовать оператор импорта вне модуля
Что мне не хватает?
Добавление объекта в модуль:
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
каталоге? Если вы используете TypeORM, вы можете показать свойTypeOrmModule
импорт вAppModule
«simports
массив? Может быть что-то не так с конфигурацией, которую мы не можем видетьОтветы:
Я предполагаю, что у вас есть
TypeormModule
конфигурация соentities
свойством, которое выглядит следующим образом:или как
Вы получаете ошибку, потому что вы пытаетесь импортировать
ts
файл вjs
контексте. Пока вы не используете веб-пакет, вы можете использовать его, чтобы получить правильные файлыгде
join
импортируется изpath
модуля. Теперь__dirname
разрешитеsrc
илиdist
затем найдите ожидаемый файлts
илиjs
соответственно. дайте мне знать, если проблема не устранена.РЕДАКТИРОВАТЬ 1/10/2020
Выше предполагается, что конфигурация выполнена в формате javascript-совместимого файла (
.js
или вTypeormModule.forRoot()
переданных параметрах). Если вы используетеormconfig.json
вместо этого, вы должны использоватьтак что вы используете скомпилированные файлы js и не имеете возможности использовать файлы ts в своем коде.
источник
deno
единственный бегун с машинным кодомTypeORM
, хотя он использует Typescript, все еще работаетNode
и время выполнения JavaScript. Возможно, могут быть сделаны улучшения, чтобы приниматьts
файлы и компилировать их в JavaScript под капотом, а затем удалять их, чтобы конечный пользователь их не видел, но это должно быть поднято как проблема в git-репозиторииКак объяснил Джей МакДонил в своем ответе, проблема заключается в сопоставлении шаблонов файлов сущностей в
ormconfig.json
файле: возможно, файл (модуль) машинописи импортирован из файла JavaScript (предположительно, ранее перенесенного файла машинописи).Должно быть достаточно удалить существующий
ts
шаблон glob вormconfig.json
, чтобы TypeORM загружал только файлы javascript. Путь к файлам сущностей должен быть относительно рабочего каталога, в котором выполняется узел.источник
src
, Вероятно , следует изменить , чтобы ,dist
как это где работоспособный код после того , как transpiled в JavaScript.В документации TypeORM я нашел специальный раздел для Typescript .
В этом разделе говорится:
Это работает с моим файлом конфигурации:
Затем вы можете запустить команду создания.
источник
Вам нужно иметь что-то для каждого раздела вашего приложения. Это работает как Angular. Это настройка с помощью распознавателей и сервиса GraphQL. REST немного отличается от контроллера. Каждый модуль, вероятно, будет иметь сущность, а если GraphQL, projects.schema.graphql.
projects.module.ts
источник