我在NestJS项目中使用的版本(我只展示了相关的包):
- “@nestjs/common”:“^9.4.0”,
- “@nestjs/axios”:“^2.0.0”,
- “axios”:“^1.3.6英寸,
- “follow-redirects”:“^1.15.2”,
我试着从一开始就遵循这里的文档:https://docs.nestjs.com/techniques/http-module
我创建了一个名为geo.module.ts
的模块,它看起来像这样:
import { Module } from '@nestjs/common';
import { GeoService } from './geo.service';
import { GeoController } from './geo.controller';
import { HttpModule } from '@nestjs/axios';
@Module({
imports: [HttpModule.register({
timeout: 5000,
maxRedirects: 5,
})],
controllers: [GeoController],
providers: [GeoService]
})
export class GeoModule {}
创建了指向服务的控制器,这很好,这里是服务:
import { HttpService } from '@nestjs/axios';
import { Injectable } from '@nestjs/common';
@Injectable()
export class GeoService {
constructor(private readonly httpService: HttpService) {}
findSomething() {
return this.httpService.get('http://urldoesntmatter.something');
}
}
此函数运行,并抛出如下错误:
[Nest] 424 - 2023. 04. 27. 7:49:48 ERROR [ExceptionsHandler] Cannot read properties of undefined (reading 'emit')
TypeError: Cannot read properties of undefined (reading 'emit')
at Object.eventHandlers.<computed> [as abort] (C:\somewhere\node_modules\follow-redirects\index.js:14:24)
at TransformOperationExecutor.transform (C:\somewhere\node_modules\src\TransformOperationExecutor.ts:207:39)
at TransformOperationExecutor.transform (C:\somewhere\node_modules\src\TransformOperationExecutor.ts:327:31)
at TransformOperationExecutor.transform (C:\somewhere\node_modules\src\TransformOperationExecutor.ts:327:31)
at TransformOperationExecutor.transform (C:\somewhere\node_modules\src\TransformOperationExecutor.ts:327:31)
对于我输入的任何URL,此错误都是真的。我在谷歌上搜索了一整天,但无法解决这个问题,为什么会发生这种情况,似乎基于文档,我没有错过任何东西。
- 也许这些版本彼此之间不兼容?
- 我已经尝试降级“跟随重定向”包也“axios”包,没有工作.
- 已经尝试过直接使用“axios”包,也尝试过使用axiosRef。尝试了不同的URL,但即使在我本地运行的api上,它也抛出了这个错误。
- 已尝试修改模块以设置“maxRedirects:5”到0。在这种情况下,有一个不同的错误,我也不想修改该值,默认情况下它是5。
- 尝试修改url以使用https而不是http,没有成功。我已经检查了文件,以及错误发生的地方,但我仍然无法找出问题。
1条答案
按热度按时间w1e3prcc1#
我想明白了。
基于THIS答案,我只是返回数据本身,而不是整个Axios对象。这最终解决了问题。(但这不是在医生。:))
更新后的代码如下所示:
感谢您的时间,如果你已经看了,并试图解决这个问题。