gpt4 book ai didi

javascript - 没有导入的 Globle 模块不起作用 nestjs

转载 作者:行者123 更新时间:2023-12-04 17:08:10 24 4
gpt4 key购买 nike

我正在尝试在 nest.js 中实现一个全局模块
我创建了如下服务

export interface ConfigData {
DB_NAME: string;
}

@Injectable()
export class ConfigManager {
private static _instance?: ConfigManager;
public static configData:ConfigData | null;
private constructor() {
console.log(ConfigManager)
if (ConfigManager._instance)
ConfigManager._instance = this;
else{
ConfigManager._instance = new ConfigManager()
ConfigManager.configData = <ConfigData|null><unknown>ConfigManager.fetchSecretData()
}
}
private static async fetchSecretData():Promise<ConfigData|null>{
// some data from db
}
// static get instance() {
// return ConfigManager._instance ?? (ConfigManager._instance = new ConfigManager());
// //return ConfigManager._instance ?? (ConfigManager._instance = ConfigManager.fetchSecretData()) //new ConfigManager());
// }

}
配置.module.ts
@Global()
@Module({
providers: [ConfigManager],
exports: [ConfigManager],
})
export class ConfigurationModule {}
并在 app.module.ts 添加 ConfigurationModule在进口。
还在服务上添加私有(private)构造函数无法将其添加到 module.ts 文件中。
我期待我应该能够 configData无需导入 ConfigManager 即可在任何地方使用。但它不起作用...... ConfigManager不导入就无法使用。

最佳答案

您只用 @Global 标记了您的模块装饰器,但 NestJS 需要以某种方式初始化该模块并使其全局可用。
这意味着您必须将此模块添加到您的核心应用程序模块中,NestJS 将为您完成剩下的工作,所以像这样(或者您的根模块的名称):

@Module({
imports: [ConfigurationModule],
})
export class AppModule {}
来自 documentation

The @Global() decorator makes the module global-scoped. Global modulesshould be registered only once, generally by the root or core module.

关于javascript - 没有导入的 Globle 模块不起作用 nestjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70064235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com