TypeOrm не генерирует миграцию в проекте, созданном typeorm

Я использую генератор шаблонов для создания проекта, но он завершается с ошибкой, когда я пытаюсь создать шаблон.

Ожидаемое поведение

Создайте миграцию с помощью сценариев sql

Фактическое поведение

      $ C:\Users\alexa\lab\ProjectTypeOrm\node_modules\.bin\typeorm migration:generate -n User
Error during migration generation:
C:\Users\myname\lab\ProjectTypeOrm\src\entity\User.ts:1
import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at wrapSafe (internal/modules/cjs/loader.js:988:16)
    at Module._compile (internal/modules/cjs/loader.js:1036:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
    at Module.load (internal/modules/cjs/loader.js:937:32)
    at Function.Module._load (internal/modules/cjs/loader.js:778:12)
    at Module.require (internal/modules/cjs/loader.js:961:19)
    at require (internal/modules/cjs/helpers.js:92:18)
    at C:\Users\alexa\lab\ProjectTypeOrm\node_modules\typeorm\util\DirectoryExportedClassesLoader.js:42:39
    at Array.map (<anonymous>)
    at Object.importClassesFromDirectories (C:\Users\alexa\lab\ProjectTypeOrm\node_modules\typeorm\util\DirectoryExportedClassesLoader.js:42:10)       
error Command failed with exit code 1.

Действия по воспроизведению

      typeorm init --name ProjectTypeOrm --database mysql --express --docker
cd ProjectTypeOrm
docker-compose up
yarn
yarn typeorm migration:create -n User
yarn typeorm migration:generate -n User

Моя среда

1 ответ

Проблема в том, что вы используете Typeorm CLI с NodeJS, но ваши объекты по-прежнему являются некомпилированными файлами Typescript. Один из способов исправить это, запустив CLI, используя ts-node.

      npx ts-node node_modules\typeorm\cli.js migration:generate -n User

Если вы часто используете эту команду, вы можете добавить собственный сценарий в свой package.json так что вам не придется каждый раз печатать все это целиком.

      {
  "scripts": {
    "orm": "ts-node node_modules/typeorm/cli.js"
  },
  "devDependencies" : {
    "ts-node": "^10"
  }
}

А затем вызовите его в свой терминал.

      npm run orm -- migration:generate -n User
Другие вопросы по тегам