加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

【express】NODE_ENV环境变量设置

发布时间:2020-12-15 00:22:10 所属栏目:C语言 来源:网络整理
导读:NODE_ENV变量用于管理开发环境与生产环境的互换。 当为开发环境时,可设置 NODE_ENV=development ,当为生产环境时,可设置 NODE_ENV=production . node_env与app.get('env')的关系: 可通过 process.env.NODE_ENV 获取当前系统环境下的环境变量 NODE_ENV 的

NODE_ENV变量用于管理开发环境与生产环境的互换。
当为开发环境时,可设置NODE_ENV=development,当为生产环境时,可设置NODE_ENV=production.
node_env与app.get('env')的关系:
可通过process.env.NODE_ENV获取当前系统环境下的环境变量NODE_ENV的值。

app.set('env') = process.env.NODE_ENV || 'development'

即 当设置了NODE_ENV变量时,expressenv的值为NODE_ENV的值,当没有设置NODE_ENV变量时,expressenv默认为development

应用实践:(与pm2结合使用)

ecosytem.json文件配置类似如下:

    {
          "apps" : [
            {
                  "name"      : "myapp","script"    : "./bin/www","watch"     : true,"watch_options": {
                    "usePolling": true
                  },"env": {
                    "COMMON_VARIABLE": "true"
                  },"env_production" : {
                    "NODE_ENV": "production"
                  },"env_development": {
                    "NODE_ENV": "development"
                  }
            }
          ],....
    }
    

先说说env与env_的区别

envobject类型,用于设置你的应用中要用到的环境变量,如{“NODE_ENV”: “development”,“ID”: “42”}

env_*也为object类型,如{“NODE_ENV”: “production”,“ID”: “89”},但其只有在运行pm2 start ecosystem.json --env *命令式时,其设置的环境变量才会被注入到当前应用中。这与env不同,env是在启动应用后被自动添加当向前应用中的,不需要运行 --env 参数。

对于env_*,我们可以定义各种具体的环境变量,以便可轻松的进行各种环境下的切换,方便与开发与部署。如env_dev,env_productiong,env_strage.....

具体说来,按照我上边配置的ecosystem.json文件,具体如下

"env": {
    "COMMON_VARIABLE": "true"
},"env_production" : {
    "NODE_ENV": "production"
},"env_development": {
    "NODE_ENV": "development"
}
  • 当运行pm2 start ecosystem.json时,只有env选项下的COMMON_VARIABLE变量被添加到应用的环境变量里。

  • 当运行pm2 start ecosystem.json --env production时,env选项下的COMMON_VARIABLE变量env_production选项下的NODE_ENV变量都被添加到应用的环境变量里了,此时NODE_ENV=production

  • 当运行pm2 start ecosystem.json --env development时,env选项下的COMMON_VARIABLE变量和env_development选项下的NODE_ENV变量都被添加到应用的环境变量里了,此时NODE_ENV=development

可看到就这么简单,只通过--env参数,就方便的实现了不同工作环境的快速切换。

现在回到项目中,我们设置好了ecosystem.json,无论是在本地开发环境还是服务器生产环境下,我们都可以用pm2 start ecosystem.json --env *等命令进行环境模式的方便切换。当然从安全角度考虑,在生产环境下,一定要用--env production,确保处于生产的安全环境下。

  • 当不带--env参数,即默认情况下不设置node_env环境变量时,app.get('env')= 'development',此默认为开发模式。

  • --env production时,设置了node_env=production,此时app.get('env')= 'production',此为生成模式。

  • --env development时,设置了node_env=development,此时app.get('env')= 'development',此为开发模式。

另外,在本地开发环境下,可通过export NODE_ENV=production,将其暂时切换到生产模式,可用于在本地调试线上情况。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读