在Nestjs中连接到Elasticsearch时出错

ha5z0ras  于 2023-06-21  发布在  ElasticSearch
关注(0)|答案(1)|浏览(205)

我使用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
lawou6xi

lawou6xi1#

我解决了这个问题,实际上ElasticSearchService是导入到另一个模块内的一个文件夹。src/search/search.module.ts所以我将ElasticSearchModule移到了ElasticSearchService作为提供程序导入的文件夹中。
ElasticSearchService可能是在app.module.ts中配置ElasticSearchModule之前注入的

相关问题