乐趣区

关于如何在部署环境修改process.env & 本地测试

前言
最近在搞一些监控的东西,需要根据不同的环境上报到不同的地址,中间遇到了一些问题,在这里简单总结分享下。
关于 process.env
假如你对 process.env 相关的概念还不熟悉,请移步:Node 环境变量 process.env 的那些事儿 , 这篇文章总结的比较好。
webpack 在构建的时候,可以为 process.env 赋值:

// Do this as the first thing so that any code reading it knows the right env.
process.env.BABEL_ENV = ‘development’;
process.env.NODE_ENV = ‘development’;

// Do this as the first thing so that any code reading it knows the right env.
process.env.BABEL_ENV = ‘production’;
process.env.NODE_ENV = ‘production’;

process 对象是一个 global(全局变量),提供有关信息,控制当前 Node.js 进程。作为一个对象,它对于 Node.js 应用程序始终是可用的,故无需使用 require()。
假如你需要根据不同的部署环境做一些区分,比如:

if (process.env.env === “test”) {
BASE_API_1 = ‘xxx
} else if (process.env.env === “uat”) {
BASE_API_1 = ‘xxx
} else if (process.env.env === “staging”) {
BASE_API_1 = ‘xxx
} else if (process.env.env === “live”) {
BASE_API_1 = ‘xxx’
} else {
BASE_API_1 = ‘xxx’;
}

比如用的是 jenkins, 构建的时候会自动给环境变量加一个 env 属性,也就是上面看到的 env.env, 不同的环境会有不同的值,比如 uat, staging, live;
本地构建的时候,是取不到这个值的,因为没有这个环境。但是你也可以手动来赋值,比如给 env.env 赋值为 ’test’, 就可以在终端执行:
env=test yarn start

随便打印一下:

console.log(process.env.env);

这样就可以了 :)
希望对大家有所启发,谢谢。

退出移动版