运行nestjs应用程序时在Typeorm迁移中“无法在模块外部使用import语句”

时间:2020-04-16 20:49:24

标签: nestjs typeorm

我已经创建了nestjs应用。在根应用程序文件夹中,有以下子文件夹:

  • dist
  • 迁移
  • src
  • 测试

迁移文件夹包含typeorm迁移。
当使用 npm run start:dev 运行应用程序时,出现此错误:

import {MigrationInterface, QueryRunner} from "typeorm";
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at Module._compile (internal/modules/cjs/loader.js:891:18)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
    at Module.load (internal/modules/cjs/loader.js:811:32)
    at Function.Module._load (internal/modules/cjs/loader.js:723:14)
    at Module.require (internal/modules/cjs/loader.js:848:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Function.PlatformTools.load (C:\Users\dakru1\Documents\employo\employo-api\node_modules\typeorm\platform\PlatformTools.js:114:28)
    at C:\Users\dakru1\Documents\employo\employo-api\node_modules\typeorm\util\DirectoryExportedClassesLoader.js:39:69
    at Array.map (<anonymous>)
    at Object.importClassesFromDirectories (C:\Users\dakru1\Documents\employo\employo-api\node_modules\typeorm\util\DirectoryExportedClassesLoader.js:39:10)

我了解错误消息,并且知道与应用程序代码相关的错误消息。

但是,我的问题是此错误来自typeorm迁移文件:[app-root-folder]\migration\1587067680466-Init.ts,在运行应用程序时不应使用该文件。

为什么nestjs使用迁移文件。运行nestjs应用程序时如何忽略迁移文件夹?

2 个答案:

答案 0 :(得分:0)

我有同样的问题。我做了以下作为解决方法:

  1. 设置您的ormconfig.json以查找仅后缀js的迁移文件:
    "migrations": ["migrations/*.js"]
  2. 全局安装打字稿:npm install -g typescript
  3. 生成迁移后,使用typescript命令将打字稿文件转换为javascript文件:
    tsc migrations/migration-file.ts
  4. 运行迁移:npm run typeorm migration:run
  5. 您现在可以运行应用程序:npm run start:dev

答案 1 :(得分:0)

要解决此问题,只需将以下代码放在package.json的“脚本”上:

"typeorm": "ts-node-dev ./node_modules/typeorm/cli.js",

之后,您将可以运行您的typeorm迁移:run:)