Nestjs SyntaxError:来自“typeorm”的意外标记{import{MigrationInterface,QueryRunner};

Nestjs SyntaxError:来自“typeorm”的意外标记{import{MigrationInterface,QueryRunner};,nestjs,typeorm,Nestjs,Typeorm,我最近正在使用NestJs和typeORM,但在运行nest应用程序时出现了一个错误。它会生成此错误 /home/backend/src/migrations/1611061187746-loadAllEntities.ts:1 import { MigrationInterface, QueryRunner } from 'typeorm'; ^ SyntaxError: Unexpected token { at Module._compile (internal/m

我最近正在使用NestJs和typeORM,但在运行nest应用程序时出现了一个错误。它会生成此错误

/home/backend/src/migrations/1611061187746-loadAllEntities.ts:1
import { MigrationInterface, QueryRunner } from 'typeorm';
       ^

SyntaxError: Unexpected token {
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
指向生成的迁移ts文件时出错

//xxxxx-migration.ts

import {MigrationInterface, QueryRunner} from "typeorm";

export class migrationMessageDetail1611143681385 implements MigrationInterface {
    name = 'migrationMessageDetail1611143681385'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query("CREATE TABLE `detail_pricing` (`id` int NOT NULL AUTO_INCREMENT, `dayStart` int NOT NULL, `dayEnd` int NOT NULL, `isCommonChoice` tinyint NOT NULL, `price` int NOT NULL DEFAULT '200', `pricePerday` int NOT NULL, `discount` int NOT NULL, `currency` varchar(255) NOT NULL, `withDeposit` int NOT NULL DEFAULT '30', `noDeposit` varchar(255) NOT NULL DEFAULT '56', `carId` int NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB");
        
....
这是我的配置tsconfig文件

//tsconfig.json
{
   "compilerOptions": {
      "lib": [
         "es5",
         "es6",
         "es2020",
         "esnext"
      ],
      "resolveJsonModule": true,
      "module": "commonjs",
      "declaration": true,
      "removeComments": true,
      "emitDecoratorMetadata": true,
      "experimentalDecorators": true,
      "allowSyntheticDefaultImports": true,
      "target": "es2020",
      "sourceMap": true,
      "outDir": "./dist",
      "baseUrl": "./",
      "esModuleInterop": true
   }
}
我已经试过了

  • migrations:['src/migrations/*.ts'],
    更改为
    [\uu dirname+'migrations/*{.ts/.js}],
    在ormconfig.ts中,运行应用程序时无错误,但迁移:运行不起作用
下面是我如何运行和生成迁移

#generate migration
$ ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js --config src/configs/ormconfig.ts migration:generate -n migrationMessageDetail -d src/migrations

#run migration
$ ./node_modules/.bin/ts-node ./node_modules/typeorm/cli.js --config src/configs/ormconfig.ts migration:run
这是我的json包

{
  "name": "cave-backend",
  "version": "0.0.1",
  "description": "",
  "author": "",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "prebuild": "rimraf dist",
    "build": "nest build",
    "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
    "start": "nest start",
    "start:dev": "nest start --watch",
    "start:debug": "nest start --debug --watch",
    "start:prod": "node dist/main",
    "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:cov": "jest --coverage",
    "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
    "test:e2e": "jest --config ./test/jest-e2e.json"
  },
  "dependencies": {
    "@golevelup/nestjs-rabbitmq": "^1.15.2",
    "@nestjs/common": "^7.5.5",
    "@nestjs/config": "^0.6.1",
    "@nestjs/core": "^7.5.5",
    "@nestjs/mapped-types": "^0.1.1",
    "@nestjs/passport": "^7.1.5",
    "@nestjs/platform-express": "^7.5.5",
    "@nestjs/platform-fastify": "^7.5.5",
    "@nestjs/swagger": "^4.7.5",
    "@nestjs/typeorm": "^7.1.5",
    "@turf/distance": "^6.0.1",
    "bcrypt": "^5.0.0",
    "class-transformer": "^0.3.1",
    "class-validator": "^0.12.2",
    "dotenv": "^8.2.0",
    "fastify-helmet": "^5.0.3",
    "fastify-swagger": "^3.5.0",
    "jwks-rsa": "^1.12.0",
    "md5": "^2.3.0",
    "mysql": "^2.18.1",
    "nexmo": "^2.9.1",
    "passport": "^0.4.1",
    "passport-jwt": "^4.0.0",
    "reflect-metadata": "^0.1.13",
    "rimraf": "^3.0.2",
    "rxjs": "^6.6.3",
    "swagger-ui-express": "^4.1.5",
    "typeorm": "^0.2.29",
    "uuid": "^8.3.1"
  },
  "devDependencies": {
    "@nestjs/cli": "^7.5.3",
    "@nestjs/schematics": "^7.2.2",
    "@nestjs/testing": "^7.5.5",
    "@types/cache-manager": "^2.10.3",
    "@types/express": "^4.17.9",
    "@types/jest": "^26.0.15",
    "@types/node": "^14.14.10",
    "@types/supertest": "^2.0.10",
    "@typescript-eslint/eslint-plugin": "^4.8.2",
    "@typescript-eslint/parser": "^4.8.2",
    "eslint": "^7.14.0",
    "eslint-config-prettier": "^6.15.0",
    "eslint-plugin-prettier": "^3.1.4",
    "jest": "^26.6.3",
    "prettier": "^2.2.1",
    "supertest": "^6.0.1",
    "ts-jest": "^26.4.4",
    "ts-loader": "^8.0.11",
    "ts-node": "^9.0.0",
    "tsconfig-paths": "^3.9.0",
    "typescript": "^4.1.2"
  },
  "jest": {
    "moduleFileExtensions": [
      "js",
      "json",
      "ts"
    ],
    "rootDir": "src",
    "testRegex": ".*\\.spec\\.ts$",
    "transform": {
      "^.+\\.(t|j)s$": "ts-jest"
    },
    "collectCoverageFrom": [
      "**/*.(t|j)s"
    ],
    "coverageDirectory": "../coverage",
    "testEnvironment": "node"
  }
}

我可以生成并运行迁移,但我不知道为什么会发生此错误
语法错误:来自“typerorm”的意外标记{import{MigrationInterface,QueryRunner}

请帮助,非常感谢您您是否尝试更改此设置:
迁移:['src/migrations/*.ts'],

对此:
migrations:['src/migrations/*{.ts、.js}',

你能分享你的package.json吗?我想知道你是如何运行迁移命令的。@uraway我编辑了我的问题。。
{
  "name": "cave-backend",
  "version": "0.0.1",
  "description": "",
  "author": "",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "prebuild": "rimraf dist",
    "build": "nest build",
    "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
    "start": "nest start",
    "start:dev": "nest start --watch",
    "start:debug": "nest start --debug --watch",
    "start:prod": "node dist/main",
    "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:cov": "jest --coverage",
    "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
    "test:e2e": "jest --config ./test/jest-e2e.json"
  },
  "dependencies": {
    "@golevelup/nestjs-rabbitmq": "^1.15.2",
    "@nestjs/common": "^7.5.5",
    "@nestjs/config": "^0.6.1",
    "@nestjs/core": "^7.5.5",
    "@nestjs/mapped-types": "^0.1.1",
    "@nestjs/passport": "^7.1.5",
    "@nestjs/platform-express": "^7.5.5",
    "@nestjs/platform-fastify": "^7.5.5",
    "@nestjs/swagger": "^4.7.5",
    "@nestjs/typeorm": "^7.1.5",
    "@turf/distance": "^6.0.1",
    "bcrypt": "^5.0.0",
    "class-transformer": "^0.3.1",
    "class-validator": "^0.12.2",
    "dotenv": "^8.2.0",
    "fastify-helmet": "^5.0.3",
    "fastify-swagger": "^3.5.0",
    "jwks-rsa": "^1.12.0",
    "md5": "^2.3.0",
    "mysql": "^2.18.1",
    "nexmo": "^2.9.1",
    "passport": "^0.4.1",
    "passport-jwt": "^4.0.0",
    "reflect-metadata": "^0.1.13",
    "rimraf": "^3.0.2",
    "rxjs": "^6.6.3",
    "swagger-ui-express": "^4.1.5",
    "typeorm": "^0.2.29",
    "uuid": "^8.3.1"
  },
  "devDependencies": {
    "@nestjs/cli": "^7.5.3",
    "@nestjs/schematics": "^7.2.2",
    "@nestjs/testing": "^7.5.5",
    "@types/cache-manager": "^2.10.3",
    "@types/express": "^4.17.9",
    "@types/jest": "^26.0.15",
    "@types/node": "^14.14.10",
    "@types/supertest": "^2.0.10",
    "@typescript-eslint/eslint-plugin": "^4.8.2",
    "@typescript-eslint/parser": "^4.8.2",
    "eslint": "^7.14.0",
    "eslint-config-prettier": "^6.15.0",
    "eslint-plugin-prettier": "^3.1.4",
    "jest": "^26.6.3",
    "prettier": "^2.2.1",
    "supertest": "^6.0.1",
    "ts-jest": "^26.4.4",
    "ts-loader": "^8.0.11",
    "ts-node": "^9.0.0",
    "tsconfig-paths": "^3.9.0",
    "typescript": "^4.1.2"
  },
  "jest": {
    "moduleFileExtensions": [
      "js",
      "json",
      "ts"
    ],
    "rootDir": "src",
    "testRegex": ".*\\.spec\\.ts$",
    "transform": {
      "^.+\\.(t|j)s$": "ts-jest"
    },
    "collectCoverageFrom": [
      "**/*.(t|j)s"
    ],
    "coverageDirectory": "../coverage",
    "testEnvironment": "node"
  }
}