基于环境变量的Node.js 开发模式、生产模式设置

 2016年03月22日    2485     声明


在做项目中,我们需要根据程序运行环境的不同(如:开发环境、生产环境)引入不同的配置文件。可以将当前的运行环境信息存储到系统的环境变量中,在Node.js中使用process.env属性获取系统的环境变量。


  1. 根据运行环境加载配置文件
  2. 环境变量

1. 根据运行环境加载配置文件

在做项目开发时,我们会将将一些配置信息,如:数据库连接信息等保存到配置文件中,并在开发环境和生产环境中加载不同的配置信息。要区分程序的运行环境,最简单易行的方式就是环境变量。

如,在环境变量中添加一个名为NODE_ENV的变量,并通过这个值来判断运行环境:

var config = require('../config');   // 生产环境中使用的配置
var configDev = require('../configDev');  // 开发环境中使用的配置
global.config = process.env.NODE_ENV === "development" ? configDev : config;

在上面示例中,在开发环境中添加了变量名为NODE_ENV将其值设置为development,而在生产环境中可以不设置这个变量或将它设置为不同的值,这样就可以实现在不同运行环境使用不同的配置。

引入配置文件后,又将其定义成了一个global全局对象。在程序的入口点(如:Expressapp.js文件中)添加这几行代码后,在程序的整个生命周期内都可以直接通过config直接引用配置信息。


2. 环境变量

环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置、系统文件夹位置等。在前面判断运行环境时,是通过一个名为NODE_ENV的环境变量实现的。

2.1 查看环境变量

在Linux或Mac系统中,可以通过echo $变量名查看某一个环境变量的值。如,查询名为HOME的环境变量:

$ echo $HOME
/root 

通过env可以查看当前系统中全部环境变量:

$ env
HOSTNAME=Sdd3dg85dqvZ
TERM=xterm-256color
SHELL=/bin/bash
HISTSIZE=1000
…


2.2 添加环境变量

在Linux或Mac系统中,添加环境变量有两种方式。添加到/etc/profile~/.bash_profile文件中,前者会对系统下所有用户生效,而后者只会对当前用户生效。

如,运行vi ~/.bash_profile命令,并添加以下行:

export NODE_ENV="development"

重启或执行以下命令,使变量生效:

$ source ~/.bash_profile

添加成功后,可能通过echo查看变量值:

$echo $NODE_ENV
development