如何设置process.env.NODE_ENV生产环境模式

 更新时间:2021年09月14日 11:38:03   作者:时清云  
process.env.NODE_ENV默认只有两种状态即development和production,本文主要介绍了process.env.NODE_ENV设置生产环境模式,感兴趣的可以了解一下

在开始之前我先强调一下: process.env.NODE_ENV默认只有两种状态即development和production,development指代本地开发即localhost环境(本地的开发),而production代表发布在任何服务上的服务(不管是dat、uat还是生产环境),node是不知道你服务是测试还是正式,除非你手动指定。通常认为都是线上环境。所以可以这样认为development代表本地开发环境,production代表线上环境(包括dat、uat和生产环境等)

我为什么会强调这一点呢?

因为有人居然用process.env.NODE_ENV中的development来代表dat,uat等线上的测试环境,所以特别强调一下,development代表本地的开发环境。

最近系统接入了公司的单点登录,为了登陆成功后再跳回系统的主页面,又申请了测试和沙箱的域名(之前都是直接用IP登的),本地开发是配置的host。接入之后发现了一个非常麻烦的点就是给单点登录传的跳转地址每次都要修改,开发的时候要写成开发的域名,测试的时候要改成测试的域名,进沙箱的时候要改成跳转沙箱的域名,上线的时候又要改成线上的域名。特别是在测试阶段,开发测试来回切换,不胜其烦。
于是就想把它写成配置文件,根据不同环境加载不同的配置,这样就不用来回改了。这个时候,process.env就跳入了脑海。

扒一扒process.env

process对象是全局变量,它提供当前node.js的有关信息,以及控制当前node.js的有关进程。因为是全局变量,它对于node应用程序是始终可用的,无需require()。

既然process都是一个对象了,env自然是它的一个属性,这个属性返回包含用户环境信息的对象。在终端输入node后,在输入process.env可以看到打印出来的信息。

主角出场 process.env.NODE_ENV

NODE_ENV不是process.env对象上原有的属性,那它是怎么添加上的呢?

先举个例子:

在package.json中,如下:

{
  "name": "yun-nobile",
  "version": "2.0.0",
  "description": "太保标准移动端产品2.0,基于vue",
  "main": "yunprod.js",
  "scripts": {
    "build": "cross-env NODE_ENV=production node yunprod.js build",
    "dev": "node yunprod.js dev"
  }
  ...
}  

在我们执行 npm run build 脚本命令时,会执行cross-env NODE_ENV=production node yunprod.js build,把NODE_ENV设置为production,所以 process.env.NODE_ENV就被设置为production了 。

所以 process.env.NODE_ENV是我们执行脚本命令时添加上去的一个全局环境变量。

process.env.NODE_ENV用来确定当前所处的开发阶段。一般生产阶段设为production,开发阶段设为develop,然后在脚本中读取process.env.NODE_ENV。
运行脚本时,可以这样改变环境变量, 在package.json文件的scripts里面添加命令:

NODE_ENV=production node build.js

但是这个命令使用Windows的同学拉下代码后就报错了,因为Windows上面设置的方式不一样

set NODE_ENV=production node build.js

但是不同电脑上不同的设置肯定是不行的呀,这个时候cross-env赶来救场了。
cross-env可以跨平台的设置和使用环境变量

npm install --save-dev cross-env

接下来我们就可以通过cross-env来设置了

cross-env NODE_ENV=production node build.js

这样设置之后,我们可以在脚本中使用process.env.NODE_ENV了,但是不能在模块中使用,要想在模块当中直接使用,我们还需要一些配置

在 webpack 4+ 中,你可以使用 mode 选项:

module.exports = {
  mode: 'production'
}

但是在 webpack 3 及其更低版本中,你需要使用 DefinePlugin:

var webpack = require('webpack')

module.exports = {
  // ...
  plugins: [
    // ...
    new webpack.DefinePlugin({
      'process.env.NODE_ENV': JSON.stringify('production')
    })
  ]
}

这样就可以直接使用啦_
现在我们要在模块中根据环境变量来配置不同的url了

let url = '';
 if (process.env.NODE_ENV === 'testing') {
   url = 'http://my.test.cn';
 } else if (process.env.alpord === 'alpord') {
   url = 'http://my.alpord.cn';
 } else if (process.env.NODE_ENV === 'production') {
   url = 'http://my.product.cn';
 } else {
   url = 'http://my.develop.cn';
 }

或者是

let url = '';
process.env.NODE_ENV === 'production'?url = 'http://my.product.cn':url = 'http://my.test.cn';

到此这篇关于如何设置process.env.NODE_ENV生产环境模式的文章就介绍到这了,更多相关process.env.NODE_ENV设置生产环境模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • node.js中使用socket.io制作命名空间

    node.js中使用socket.io制作命名空间

    这篇文章主要介绍了node中使用socket.io制作命名空间,需要的朋友可以参考下
    2014-12-12
  • 详解用Node.js实现Restful风格webservice

    详解用Node.js实现Restful风格webservice

    本篇文章主要介绍了详解用Node.js实现Restful风格webservice,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • NodeJs读取JSON文件格式化时的注意事项

    NodeJs读取JSON文件格式化时的注意事项

    本文是作者在进行NodeJs开发时偶然发现的问题,经过一番努力,最终找到解决方案,分享给大家,有需要的小伙伴可以参考下
    2016-09-09
  • koa上传excel文件并解析的实现方法

    koa上传excel文件并解析的实现方法

    这篇文章主要介绍了koa上传excel文件并解析的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • node+koa实现数据mock接口的方法

    node+koa实现数据mock接口的方法

    本篇文章主要介绍了node+koa实现数据mock接口的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 解决Linux无法正常安装与卸载Node.js的方法

    解决Linux无法正常安装与卸载Node.js的方法

    最近在学习node.js,所以下面这篇文章主要给大家介绍了关于如何解决Linux无法正常安装与卸载Node.js的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧。
    2018-01-01
  • Node.js包管理器npm的具体使用

    Node.js包管理器npm的具体使用

    Node.js安装包中都带有一个重要的工具 包管理器npm,本文主要介绍了Node.js包管理器npm的具体使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Node.js编写组件的三种实现方式

    Node.js编写组件的三种实现方式

    这篇文章主要介绍了Node.js编写组件的三种实现方式,包括纯js实现、v8 API实现(同步&异步)、借助swig框架实现,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Node.js进程管理之子进程详解

    Node.js进程管理之子进程详解

    本文详细讲解了Node.js进程管理之子进程,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Node Express用法详解【安装、使用、路由、中间件、模板引擎等】

    Node Express用法详解【安装、使用、路由、中间件、模板引擎等】

    这篇文章主要介绍了Node Express用法,结合实例形式详细分析了node.js Express安装、使用、路由、中间件、模板引擎等相关概念、原理及操作注意事项,需要的朋友可以参考下
    2020-05-05

最新评论