NestJS动态Mongoose模块无法注入Symbol(MONGO_MODULE_OPTIONS)问题求助
我正在尝试构建一个动态模块,用来帮我自动注册Mongoose,但在使用MongooseModule.forRootAsync({...})异步注入配置选项时遇到了麻烦——系统一直提示无法注入Symbol(MONGO_MODULE_OPTIONS),我完全搞不懂哪里出了问题。
我已经在动态模块里导出了Symbol(MONGO_MODULE_OPTIONS),相关代码如下:
const asyncProviders = this.createAsyncProviders(options); const databaseOptionsModule = { module: MongoModule, imports: [...(options.imports ?? [])], providers: [...asyncProviders], exports: [MONGO_MODULE_OPTIONS], };
后来我换了思路,尝试在同一个动态模块里直接调用MongooseModule.forRootAsync,但问题依然存在。运行e2e测试时,始终弹出如下错误:
$ pnpm test:e2e
bugs@0.0.1 test:e2e /home/kasir/projects/bugs
jest --config ./test/jest-e2e.jsonFAIL test/app.e2e-spec.ts
AppController (e2e)
✕ / (GET) (6 ms)● AppController (e2e) › / (GET)
Nest can't resolve dependencies of the MongooseModuleOptions (?). Please make sure that the argument Symbol(MONGO_MODULE_OPTIONS) at index [0] is available in the MongooseCoreModule context.
Potential solutions:
- Is MongooseCoreModule a valid NestJS module?
- If Symbol(MONGO_MODULE_OPTIONS) is a provider, is it part of the current MongooseCoreModule?
- If Symbol(MONGO_MODULE_OPTIONS) is exported from a separate @Module, is that module imported within MongooseCoreModule?
@Module({
imports: [ /* the Module containing Symbol(MONGO_MODULE_OPTIONS) */ ]
})
有没有什么可行的解决方案?除了改用同步版本的register API(这个我知道能生效,但不想用),其他建议都可以!
内容来源于stack exchange

