【问题标题】:Cannot use import statement outside a module in nestjs using typeorm无法在使用 typeorm 的 Nestjs 中的模块外使用 import 语句
【发布时间】:2021-09-15 21:03:46
【问题描述】:

虽然执行npm run typeorm migration:generate -- -n migrationNameHere 一切正常,然后当我执行npm run typeorm migration:run 时,数据库中的所有迁移都正常,但是当我执行npm run start:dev 时出现错误:

This is the error i get

这是我的文件夹树:

The structure of my folders

这是我的 ormconfig.json 文件:

{
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "root",
"password": "",
"database": "tpicoxxxxx",
"entities": ["dist/**/*.entity{.ts,.js}"],
"migrationsTableName": "migrations_table",
"migrations": ["src/databasesssx/migrations/*{.ts,.js}"],
"cli": {
    "migrationsDir": "src/databasesssx/migrations"
}

}

在 package.json 文件中,我在脚本部分有以下行:

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

我正在使用 typeorm ,mysql2

我正在使用 mac big sur。

我认为问题可能是因为 databasesssx 文件夹在 src 之外,然后我移动到 src 文件夹中,但问题没有解决。

这是我在注册模块中的脚本:

import { Module } from '@nestjs/common';
 import { TypeOrmModule } from '@nestjs/typeorm';
import { Administrador } from './administrador/entities/administrador.entity';
import { RegistroControllerController } from './registro-controller/registro- 
controller.controller';
import { ServiceRegistroService } from './service-registro/service-registro.service';

 @Module({

  imports : [
    TypeOrmModule.forFeature([Administrador]),
  ],

 providers: [ServiceRegistroService],

  controllers: [RegistroControllerController]  

 })
  export class RegistroModule {}

这是 app.module 中的脚本

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AppController } from './app.controller';
 import { AppService } from './app.service';
import { RegistroModule } from './registro/registro.module';

   @Module({
  imports: [RegistroModule  ,TypeOrmModule.forRoot()],
   controllers: [AppController],
   providers: [AppService],
   })
   export class AppModule {}

然后我尝试在此堆栈溢出站点中遵循下一个解决方案:Similar Problem

但问题仍然存在。

顺便说一句,我在 mac 中使用 xammp 和 phpmyadmin。

非常感谢。

【问题讨论】:

  • 向我们展示你的start:devnpm-script
  • 如果您将 ormconfig 的 dist 更改为 src 会怎样
  • 你好 @MicaelLevi 这是脚本:start:dev: nest start --watch 在 package.json 中。
  • @MicaelLevi 如果我将 dist 更改为 src 迁移和所有工作,但主要问题仍然存在。

标签: nestjs database-migration typeorm


【解决方案1】:

"migrations": ["src/databasesssx/migrations/*{.ts,.js}"],

这会告诉 TypeORM 存在迁移的位置,这很好,直到您意识到 TypeORM 不仅会在运行迁移时读取迁移,还会在启动应用程序时读取迁移。所以现在,在运行nest start --watch(本质上在后台运行node)时,JavaScript 引擎正在从src/migrations 导入一个Typescript 文件并导致错误。如果可能的话,我会将运行时配置从 CLI 配置中分离出来,以确保不会发生这种事情

【讨论】:

  • 非常感谢@Jay McDoniel,我将研究如何进行该配置:)。谢谢
  • 我不知道如何分离它我该怎么做?请
  • 您可以制作两个配置文件,作为一个选项。
猜你喜欢
  • 2020-04-13
  • 2021-08-05
  • 2020-07-30
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 2020-10-10
相关资源
最近更新 更多