共享自定义 NestJS 模块给出“不是当前处理模块的一部分”错误

Dan*_*éus 3 typescript nestjs

我们正在为不同的服务运行几个 NestJS 应用程序。它们都共享一些通用代码,在我们的例子中是 ConfigModule 和 CacheModule。我想将它们分解并放入公司“通用”npm 包中,以最大程度地减少代码复制。

\n

但我遇到了一个错误:

\n
\n

Nest 无法导出不属于当前处理的模块 (ConfigModule) 的\n组件/模块。请验证每个\n导出的单元在此特定上下文中是否可用

\n
\n

我有点不知道问题到底是什么。任何帮助深表感谢。

\n

app.ts服务 A 中:

\n
import {\xc2\xa0ConfigModule } from \'@company/npm-common\';\n...\n@Module({\n  imports: [ConfigModule, ...],\n})\nexport class AppModule {}\n
Run Code Online (Sandbox Code Playgroud)\n

现在@company/npm-common导入到 package.json 中file:../npm-common

\n

npm-common/index.ts:

\n
export *  from \'./Config\';\n
Run Code Online (Sandbox Code Playgroud)\n

npm-common/Config/index.ts

\n
export { ConfigService } from \'./config.service\';\nexport { ConfigModule }\xc2\xa0from \'./config.module\';\n
Run Code Online (Sandbox Code Playgroud)\n

npm-common/Config/config.service:

\n
import { Global, Module } from \'@nestjs/common\';\nimport { ConfigService } from \'./config.service\';\n\n@Global()\n@Module({\n  providers: [\n    {\n      provide: ConfigService,\n      useValue: new ConfigService(),\n    },\n  ],\n  exports: [ConfigService],\n})\nexport class ConfigModule {}\n
Run Code Online (Sandbox Code Playgroud)\n

Dan*_*éus 7

这个问题的愚蠢答案是主应用程序和外部模块加载了不同版本的 NestJS。从这个意义上来说,5.5 版似乎与 6 版不兼容。