我使用ElasticSearch模块在nestjs中设置了ElasticSearch,但是我在标题上看到了这个错误。经过大量的调试,我发现在@nestjs/elasticsearch包的ElasticSearchService文件中,选项被传递为undefined
我该怎么办?
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { ElasticsearchModule } from '@nestjs/elasticsearch';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { SearchModule } from './search/search.module';
@Module({
imports: [
ConfigModule.forRoot(), // Make sure this line is present
ElasticsearchModule.registerAsync({
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
node: configService.get('ELASTICSEARCH_NODE'),
}),
inject: [ConfigService],
}),
SearchModule,
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
错误:
[Nest] 470882 - 06/06/2023, 8:08:10 PM ERROR [ExceptionHandler] Cannot read properties of undefined (reading 'cloud')
TypeError: Cannot read properties of undefined (reading 'cloud')
at new Client (/home/oem/Documents/nestjs-starter/node_modules/@elastic/elasticsearch/src/client.ts:128:15)
at new ElasticsearchService (/home/oem/Documents/nestjs-starter/node_modules/@nestjs/elasticsearch/dist/elasticsearch.service.js:21:9)
at Injector.instantiateClass (/home/oem/Documents/nestjs-starter/node_modules/@nestjs/core/injector/injector.js:340:19)
at callback (/home/oem/Documents/nestjs-starter/node_modules/@nestjs/core/injector/injector.js:53:45)
at Injector.resolveConstructorParams (/home/oem/Documents/nestjs-starter/node_modules/@nestjs/core/injector/injector.js:132:24)
at Injector.loadInstance (/home/oem/Documents/nestjs-starter/node_modules/@nestjs/core/injector/injector.js:57:13)
at Injector.loadProvider (/home/oem/Documents/nestjs-starter/node_modules/@nestjs/core/injector/injector.js:84:9)
at async Promise.all (index 4)
at InstanceLoader.createInstancesOfProviders (/home/oem/Documents/nestjs-starter/node_modules/@nestjs/core/injector/instance-loader.js:44:9)
at /home/oem/Documents/nestjs-starter/node_modules/@nestjs/core/injector/instance-loader.js:29:13
1条答案
按热度按时间lawou6xi1#
我解决了这个问题,实际上
ElasticSearchService
是导入到另一个模块内的一个文件夹。src/search/search.module.ts
所以我将ElasticSearchModule
移到了ElasticSearchService
作为提供程序导入的文件夹中。ElasticSearchService
可能是在app.module.ts
中配置ElasticSearchModule
之前注入的