首页 > 解决方案 > 在nest.js中未定义process.env.variable

问题描述

我正在使用nest.js,我想导入在 auth.parameters.ts 文件中定义的对象。文件定义如下。除非在类中声明了以下变量,否则环境变量似乎不可见。

export const obj = {
    somevar : process.env.CUSTOM_VAR,

}; 

在我的其他课程中,我想使用 import {SecurityParameters } from '../auth/auth.parameters' 导入文件

并使用 console.log(SecurityParameters.somevar) 访问变量。

我可以使用 process.env.CUSTOM_VAR 或直接访问变量

如果我在其他文件中使用 somevar : process.env.CUSTOM_VAR ,我会得到未定义。

标签: javascriptnode.jsnestjs

解决方案


当您使用 NestConfigModule时,除非您正在创建自定义配置文件,否则您不应该使用process.env. 相反,您应该ConfigService在需要环境变量并使用this.configService.get('CUSTOM_VARIABLE')(或您需要的任何值)的地方注入 Nest。要开始使用此功能,您需要导入配置模块

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';

@Module({
  imports: [ConfigModule.forRoot()],
})
export class AppModule {}

您可以传递{ isGlobal: true }forRoot()调用以ConfigService在应用程序中的任何位置进行注入。

如果您想要一种可以使用该process.env对象的不同方法,您可以将其添加为您的前两main.ts

import { config } from 'dotenv';
config();

Nest 在 的内部调用了这个(或类似的东西)ConfigService,但这并不能立即可用。


推荐阅读