Node.js process.env 根据环境切换配置文件

process.env 介绍


process(进程)对象是一个 global (全局变量),提供有关信息,控制当前 Node.js 进程。作为一个对象,它对于 Node.js 应用程序始终是可用的,无需使用 require()。


process.env 属性会返回包含用户环境的对象。

文档:http://nodejs.cn/api/process.html#process_process_env

很明显的一个使用场景,依靠这个我们就可以给服务器上打上一个标签。这样的话,我们就能根据不同的环境,做一些配置上的处理。


如何配置环境变量


Windows临时配置

直接在cmd环境配置即可,查看环境变量,添加环境变量,删除环境变量。

#node中常用的到的环境变量是NODE_ENV,首先查看是否存在
set NODE_ENV
#如果不存在则添加环境变量
set NODE_ENV=production
#环境变量追加值 set 变量名=%变量名%;变量内容
set path=%path%;C:\web;C:\Tools
#某些时候需要删除环境变量
set NODE_ENV=


Windows 永久配置

右键(此电脑) -> 属性(R) -> 高级系统设置 -> 环境变量(N)...


Linux临时配置

查看环境变量,添加环境变量,删除环境变量

#node中常用的到的环境变量是NODE_ENV,首先查看是否存在
echo $NODE_ENV

#如果不存在则添加环境变量
export NODE_ENV=production

#要删除环境变量
unset NODE_ENV

#显示所有的环境变量
env


Linux永久配置

推荐使用当前用户配置文件 ~/.bash_profile,不推荐使用 /etc/profile

打开配置文件:

# 当前用户生效
vi ~/.bash_profile


在文件末尾添加如下语句:

export NODE_ENV=production


修改完成后,执行下列命令立即生效

source ~/.bash_profile


PM2 配置

pm2 start server.js --env production

我看见有资料提示可以这样做,结果测试无效,最后只能在 pm2 的生态系统文件里设置

module.exports = {
  apps: [{
    name: 'cnrestfulapi',
    script: './server.js',
    env: {
      NODE_ENV: 'production'
    },
    ...
   ]
}


案例


./config/index.js 文件

var configDefault = require("./config.default");
var configLocal = require("./config.local");

/**
 * 生产环境,配置文件切换
 */
if (process.env.NODE_ENV == "production") {
 module.exports = configDefault;
} else {
 module.exports = configLocal;
}


./bin/test.js 文件

const config = require("../config");
console.log(config);



参考:

https://github.com/ngtwewy/koa-restful-api-seed

https://blog.csdn.net/u012971339/article/details/81876165

修改时间 2021-05-19

真诚赞赏,手留余香
赞赏
随机推荐
Angular和React简单对比
Windows批处理使用7-zip压缩多个文件夹
macOS卸载Android Studio
CentOS 7 挂载和卸载扩展云盘
vue-router 页面跳转后如何记录返回后的位置
NodeJs通过async/await处理异步
DedeCMS 如何使用文章列表序号
javascript加载顺序LABjs
php图片压缩
PDO 中 bindParam 和 bindValue 的区别