运行nestjs应用程序时typeorm迁移中的“不能在模块外使用import语句”
Posted
技术标签:
【中文标题】运行nestjs应用程序时typeorm迁移中的“不能在模块外使用import语句”【英文标题】:"Cannot use import statement outside a module" in typeorm migration when run nestjs app 【发布时间】:2020-07-30 06:10:49 【问题描述】:我已经创建了 nestjs 应用程序。在根应用程序文件夹中,我有这些子文件夹:
分布 迁移 源代码 测试迁移文件夹包含 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应用程序时如何忽略迁移文件夹?
【问题讨论】:
这能回答你的问题吗? TypeORM Entity in NESTJS - Cannot use import statement outside a module 【参考方案1】:要解决它,只需将以下代码放在 package.json 的“脚本”中:
"typeorm": "ts-node-dev ./node_modules/typeorm/cli.js",
之后,您将能够运行 typeorm 迁移:运行 :)
【讨论】:
【参考方案2】:我遇到了同样的问题。我做了以下解决方法:
-
设置您的 ormconfig.json 以查找仅具有
js
后缀的迁移文件:"migrations": ["migrations/*.js"]
,
全局安装打字稿:npm install -g typescript
生成迁移后,使用 typescript 命令将 typescript 文件转换为 javascript 文件:tsc migrations/migration-file.ts
运行您的迁移:npm run typeorm migration:run
您现在可以运行您的应用程序:npm run start:dev
【讨论】:
这是最佳答案,但不要这样做。查看 Tiago 的答案。 @Gus 你能详细说明为什么我们不应该这样做吗? 它有很多问题:它在 TypeScript 上中断(因为.ts
-> .js
更改),需要全局安装包,需要更多步骤等。以上是关于运行nestjs应用程序时typeorm迁移中的“不能在模块外使用import语句”的主要内容,如果未能解决你的问题,请参考以下文章
播种时NestJS中的TypeOrm:RepositoryNotFoundError
使用 TypeORM 和 NestJs 和 Typescript 创建新迁移时出错 [关闭]