javascript - 在 Nest.js 中定义 Node 环境
问题描述
我正在设置 Nest.js 项目,我正在寻找定义 Node 环境的有效解决方案,该解决方案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"
),但我想知道是否有更好的方法来处理不同的环境,而不是在每个脚本中附加它?
解决方案
发展
如果应始终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);
制作/分期
在暂存或生产系统上,我建议将其设置为普通系统变量,请参阅此线程。
推荐阅读
- ruby-on-rails - 当我执行 rake db:setup 时,rake 中止
- c# - 我可以在调试期间发送电子邮件,但在发布时不能(ASP.NET)
- python - 重置命令行、路径等
- json - 从 Sentry 的本地实例中解压缩压缩的 json blob-as-text(nodestore_node 表)数据
- python-3.x - pyspark的parallelize()出错
- reactjs - 如何在我的 Gatsby 博客网站中有效地显示 GIF 图像?
- python - 在数组中重塑数组
- javascript - 防止 addEventListener 在元素上重复
- python - 附加到数据框的列变为空
- typescript - 从打字稿中的联合类型中排除泛型