&引用;无法在模块外部使用导入语句;运行nestjs应用程序时在typeorm迁移中

&引用;无法在模块外部使用导入语句;运行nestjs应用程序时在typeorm迁移中,nestjs,typeorm,Nestjs,Typeorm,我已经创建了nestjs应用程序。在根应用程序文件夹中,我有以下子文件夹: 距离 迁移 src 试验 迁移文件夹包含typeorm迁移。 当使用npm运行应用程序时,运行start:dev时,我出现以下错误: import {MigrationInterface, QueryRunner} from "typeorm"; ^^^^^^ SyntaxError: Cannot use import statement outside a module at Module._compi

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

  • 距离
  • 迁移
  • src
  • 试验
迁移文件夹包含typeorm迁移。
当使用npm运行应用程序时,运行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”导入{MigrationInterface,QueryRunner};
^^^^^^
SyntaxError:无法在模块外部使用导入语句
at模块编译(内部/modules/cjs/loader.js:891:18)
at Object.Module._extensions..js(internal/modules/cjs/loader.js:991:10)
在Module.load(内部/modules/cjs/loader.js:811:32)
at Function.Module._load(内部/modules/cjs/loader.js:723:14)
at Module.require(内部/modules/cjs/loader.js:848:19)
根据需要(internal/modules/cjs/helpers.js:74:18)
在Function.PlatformTools.load(C:\Users\dakru1\Documents\employo\employo api\node\u modules\tyform\PlatformTools.js:114:28)
位于C:\Users\dakru1\Documents\employo\employo api\node\u modules\typeorm\util\DirectoryExportedClassesLoader.js:39:69
在Array.map()处
在Object.importClasseSfrom目录下(C:\Users\dakru1\Documents\employo\employo api\node\u modules\typeorm\util\DirectoryExportedClassesLoader.js:39:10)
我理解错误消息,并且知道当它与应用程序代码相关时如何修复它

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


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

我也遇到了同样的问题。我做了以下工作作为解决办法:

  • 将您的ormconfig.json设置为只查找后缀为
    js
    的迁移文件:
    “迁移”:[“migrations/*.js”]
  • 全局安装typescript:
    npm安装-g typescript
  • 生成迁移后,使用typescript命令将typescript文件转换为javascript文件:
    tsc迁移/migration file.ts
  • 运行您的迁移:
    npm运行typeorm迁移:运行
  • 现在可以运行应用程序:
    npm运行开始:dev

  • 要解决这个问题,只需在package.json的“脚本”中添加以下代码:

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

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

    这是否回答了您的问题?这是最好的答案,但不要这样做。看看蒂亚戈的答案。@Gus你能详细说明一下为什么我们不应该这样做吗?它有很多问题:它在TypeScript上出现了中断(因为
    .ts
    ->
    .js
    更改),需要全局安装包,需要更多步骤,等等。