NODE_ENV作用知多少

  1. 场景
  2. process对象与NODE_ENV
    1. 获取NODE_ENV
    2. 设置NODE_ENV
    3. 在webstorm中设置NODE_ENV
    4. 使用cross-env实现跨平台设置NODE_ENV
  3. 总结

场景

我们在开发的时候经常会有生产环境和开发环境,这两种环境中可能用到不同的配置,比如本地域名和线上域名,如何去区别它们,是我今天要谈到的一个问题。

process对象与NODE_ENV

Node.js中有一个全局的对象process,这个对象无需require(),它控制着Node.js的进程的信息。

它有一个属性,叫做env。我下面将会使用这个属性,在它里面挂载一个NODE_ENV属性,我们通过这个NODE_ENV来判断开发环境和生产环境。

获取NODE_ENV

由于我们有process对象,所以可以直接在任意代码处获取到NODE_ENV,并根据该对象的值判断环境,新建一个index.js,如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* Creator: JIZHUA<413807584@qq.com>
* Date: 2018/11/8
* Time: 3:37 PM
*/

let url = ''

if (process.env.NODE_ENV == 'dev') {
url = `http://localhost:3000`
} else {
url = `http://www.fenxiangtech.com`
}

console.log(url)

设置NODE_ENV

我们既然能够获取到NODE_ENV,那么我们如何设置这个NODE_ENV。即我们要在生产环境设置NODE_ENV值为production,在开发环境设置NODE_ENV的值为dev。

首先开起你的命令行,在windows下是CMD,在mac下是terminal。

windows下:

1
set NODE_ENV=dev node index.js

mac下:

1
export NODE_ENV=dev node index.js

现在在当前窗口下,输出的url就是http://localhost:3000,关闭窗口后需要重新设置

在webstorm中设置NODE_ENV

  1. 点击右上角的edit configuration

    1

  2. 找到environment variables

    2

  3. 设置NODE_ENV

    3

使用cross-env实现跨平台设置NODE_ENV

首先初始化一个package.json

1
npm init -y

然后安装cross-env

1
npm i cross-env -D

接着在package.json的scripts中加入下面的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"name": "node-test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "cross-env NODE_ENV=dev node index.js"
},
"author": "",
"license": "ISC",
"dependencies": {},
"devDependencies": {
"cross-env": "^5.2.0"
}
}

接着在命令行中运行npm run test既可看到结果

总结

这就是NODE_ENV的作用,这个变量是自定义的名字,但是env这个属性不是哦。大家了解了吗?欢迎指正,交流!


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com

×

喜欢就点赞,疼爱就打赏