我正在尝试使用ElasticsearchService Nest服务,但无法解析依赖关系
这是与package.json相关的模块版本:
"@nestjs/common": "^5.5.0",
"@nestjs/core": "^5.5.0",
"@nestjs/elasticsearch": "^6.0.1",
"@types/elasticsearch": "^5.0.34",
"elasticsearch": "^16.3.0",这是一个示例代码:
import { Test, TestingModule } from '@nestjs/testing';
import * as mocha from 'mocha';
import {
ElasticsearchService,
ElasticsearchModule,
} from '@nestjs/elasticsearch';
import { Client } from 'elasticsearch';
const clientFactory = {
provide: Client,
useFactory: () => {
return new Client({});
},
};
mocha.describe('Test Suite', () => {
let module: TestingModule;
let elasticsearch: ElasticsearchService;
before(async () => {
module = await Test.createTestingModule({
imports: [ElasticsearchModule],
providers: [ElasticsearchService, clientFactory],
}).compile();
elasticsearch = module.get<ElasticsearchService>(ElasticsearchService);
});
it('should be defined', () => {
console.log('This message does not appears');
});
});发布于 2019-08-08 04:59:31
除非这是一个e2e测试,否则不应该导入Module文件,因为您正在使用Nest的助手函数创建TestModule。这可能会导致您不正确地覆盖ElasticSearchService,并且不允许Nest注入正确的值。
发布于 2019-08-13 23:55:04
如果你看这里:https://www.npmjs.com/package/@nestjs/elasticsearch看起来ElasticSearchModule并不是一个真正可以使用的模块,它更像是一个工厂,在那里你需要调用ElasticsearchModule.register()或ElasticsearchModule.registerAsync()来返回一个NestJS模块。
module = await Test.createTestingModule({
imports: [ElasticsearchModule.register(...)],
providers: [ElasticsearchService, clientFactory],
}).compile();之前没有用过这个模块,这只是一个最好的猜测,祝你好运!
https://stackoverflow.com/questions/57401374
复制相似问题