簡體   English   中英

在nest.js中未定義process.env.variable

[英]process.env.varible undefined in nest.js

我正在使用nest.js,我想導入在auth.parameters.ts 文件中定義的object。 文件定義如下。 除非在 class 中聲明了以下變量,否則環境變量似乎不可見。

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,我會得到未定義。

當您使用 Nest 的ConfigModule時,除非您正在創建自定義配置文件,否則您不應該對process.env做任何事情。 相反,您應該在需要環境變量的地方注入 Nest 的ConfigService並使用this.configService.get('CUSTOM_VARIABLE') (或您需要的任何值)。 要開始使用此功能,您需要導入配置模塊

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

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

您可以將{ isGlobal: true }傳遞給forRoot()調用,以使ConfigService可在應用程序的任何位置注入。

如果您想要一種不同的方法,您可以使用process.env object 代替,您可以將其添加為main.ts前兩

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

Nest 在ConfigService的后台調用它(或類似的東西),但這並不能立即使用它。

就我而言,我將 @types/node 降級為與我的節點版本相同的版本。 可能是一個提示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM