代码之家  ›  专栏  ›  技术社区  ›  Nikola Stojaković

在中定义节点环境鸟巢.js

  •  0
  • Nikola Stojaković  · 技术社区  · 5 年前

    ConfigService

    import { Module } from '@nestjs/common';
    import { ConfigService } from './config.service';
    
    @Module({
        providers: [
            {
                provide: ConfigService,
                useValue: new ConfigService(`environments/${process.env.NODE_ENV}.env`)
            }
        ],
        exports: [ConfigService]
    })
    export class ConfigModule {}
    

    现在我直接在npm脚本中定义它(例如 "start:dev": "NODE_ENV=development nodemon" ),但我想知道是否有更好的方法来处理不同的环境,而不是在每个脚本中附加它?

    1 回复  |  直到 5 年前
        1
  •  4
  •   Kim Kern    5 年前

    发展

    如果它应该一直 development 只需将其设置为系统变量,请参见 在下面。如果您希望在开发过程中运行不同的环境,那么附加npm运行脚本是一种可行的方法。此外,您可以使用 cross-env 要确保脚本在不同的平台上工作,请执行以下操作:

    "start": "cross-env NODE_ENV=development ts-node -r tsconfig-paths/register src/main.ts",
    

    jest-e2e.json :

    "globals": {
      "NODE_ENV": "test"
    }
    

    设置(或更改)一个特定测试的环境也可以在测试代码中完成:

    let previousNodeEnv;
    beforeAll(() => {
      previousNodeEnv = process.env.NODE_ENV;
      process.env.NODE_ENV = 'test';
    });
    
    afterAll(() => process.env.NODE_ENV = previousNodeEnv);
    

    生产/暂存

    在暂存或生产系统中,我建议将其设置为常规系统变量,请参阅 this thread .

        2
  •  0
  •   Et9    4 年前

    没有cross env,您可以使用:

    "start:local": "NODE_ENV=test ts-node -r tsconfig-paths/register src/main.ts "