TypeError: rxjs_1.lastValueFrom 不是函数

Posted

技术标签:

【中文标题】TypeError: rxjs_1.lastValueFrom 不是函数【英文标题】:TypeError: rxjs_1.lastValueFrom is not a function 【发布时间】:2021-09-19 20:24:21 【问题描述】:

我正在使用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  

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

错误的原因可能是什么?

【问题讨论】:

也许:github.com/nestjs/nest/issues/7468 【参考方案1】:

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

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

选择你喜欢的包管理器并使用它。

在NestJS的最后一次更新中,当使用cli初始化项目时抛出此错误。

【讨论】:

谢谢杰!很好的解释! 谢谢,这个帮助 这再次提醒了我为什么我喜欢 ***。一个相当神秘的错误消息,但这是几秒钟内的完美答案。谢谢!【参考方案2】:

真正的答案

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

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

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

【讨论】:

【参考方案3】:

更新 package.json 中的 "@nestjs/typeorm": "^7.1.5" 并输入 npm i 并重启服务器

【讨论】:

以上是关于TypeError: rxjs_1.lastValueFrom 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

ionic - RXJS 错误:rxjs_Observable__.Observable.combineLatest 不是函数

带有 rxjs 错误的相关请求:可观察 _isScalar: false, _subscribe: f

TypeError:中间件不是存储中的函数

Angular RxJS flatMap这个_this

Angular rxjs Observable.timer 不是具有导入功能的函数

Angular2 RxJS 得到“Observable_1.Observable.fromEvent 不是函数”错误