如何在nest.js中使用全局变量?

yan*_*liu 7 global inversion-of-control node.js typescript nestjs

以配置为例,Nest.js 文档提倡注册 Config Module,并以依赖注入的方式将其注入到其他模块中。

好处很明显,依赖和代码也清晰,但是如果我有一个nest.js项目需要在启动时调用配置信息怎么办?这实际上给我带来了麻烦。

我的想法是使用一个store(实际上是一个闭包)来管理全局可能需要的所有变量,客户端链接对象,在启动时注册,并在需要时引入。

当相应的变量以这种方式注册后,就可以在任何地方引入它们。缺点是您需要自己管理依赖关系。

以上demo概念设计: https: //github.com/sophons-space/nest-server

请大家帮我指正,我还是个菜鸟。

kos*_*kMD 8

如果你想使用 Nest flow 它应该在configuration文件中定义

// app.module.ts
import configuration from './config/configuration';

imports: [
// first import as first initialization
  ConfigModule.forRoot({
    isGlobal: true, // to get access to it in every component
    load: [configuration],
  }),
]
...
// configuration.ts
export default (): any => {
  return {
    someGlobalConfigVariable: parseInt(process.env.PORT, 10) || 3000,
  };
};

Run Code Online (Sandbox Code Playgroud)


小智 7

创建一个文件 global.service.ts (在文件夹中,您可以将其命名为 utils 或其他名称)并将代码放在下面

export class GlobalService{ 
   static globalVar: any; 
}
Run Code Online (Sandbox Code Playgroud)

将值设置为 globalVar

GlobalService.globalVar = 'some value';
Run Code Online (Sandbox Code Playgroud)

从 globalVar 获取值

console.log(GlobalService.globalVar);
Run Code Online (Sandbox Code Playgroud)

注意:无论您想使用什么地方,都不要忘记导入 GlobalService。


kos*_*kMD 2

您可以使用通用的 NodeJS 方法

global.SomeGlobalVariableName = 'SomeGlobalVariableValue';

console.log(SomeGlobalVariableName);
Run Code Online (Sandbox Code Playgroud)