TypeError: rxjs_1.lastValueFrom is not a function

TypeError: rxjs_1.lastValueFrom is not a function

我正在使用 nestjs 构建一个 api。添加 typeorm 和 pg 依赖项并在 app.module.ts 中添加 TypeOrmModule.forRoot({}) 代码后,如下所示。

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

@Module({
  imports: [CoffeesModule, TypeOrmModule.forRoot({
    type: 'postgres',
    host: 'localhost',
    port: 5432,
    username: 'postgres',
    password: 'xxx',
    database: 'postgres',
    autoLoadEntities: true,
    synchronize: true
  })],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule { }

我收到一个错误 TypeError: rxjs_1.lastValueFrom is not a function,但当我排除 TypeOrmModule.forRoot({}) 时没有错误。

错误的可能原因是什么?

如果您使用的是 Nest v8,则使用 RxJS 版本 7,它不再具有 Observables 的 toPromise() 方法,因此 Nest 改用 lastValueFrom 方法。如果您收到此错误,您可能需要将 rxjs 依赖项更新为 >7.

npm i rxjs@^7
yarn add rxjs@^7
pnpm i rxjs @^7

选择你喜欢的包管理器并尝试一下。

上次更新NestJS时,使用cli初始化项目时抛出此错误。

update "@nestjs/typeorm": "^7.1.5" in package.json 并输入 npm i 并重启服务器

真正的答案

问题是与 nest 版本冲突.. 看到这个的任何人 - 只要确保你所有的 nestJs 包都是版本 7 或 8 - 不要混淆它们。特别是那些:

  • @nestjs/common
  • @nestjs/core
  • @nestjs/typeorm

从这里开始:https://github.com/nestjs/nest/issues/7468#issuecomment-876174870