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);


备注:

通过 npm 的配置文件 packge.json, pm2 生态系统配置文件,也都可以设置 process.env


参考:

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

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

修改时间 2022-11-27

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
真诚赞赏,手留余香
赞赏
随机推荐
数据库中间表应该如何命名
MySQL 批量修改时间
WordPress 后台添加菜单
WordPress 常用接口
JavaScript 代码混淆加密工具 javascript-obfuscator
Node.js MySQL2 如何编写事务
使用 svg 作为背景图片
JavaScript console 的用法