nodejs 如何自动化配置环境参数

应用场景:

最近用 node 重构了网站的项目,部署到测试环境的时候测试一切正常。

直到有一天,运维把代码上线到内测环境的时候......

突然发现:内测环境和测试环境竟然是同一台服务器,只不过是把代码放在了两个不台的位置而已~

这样的话,在同一台服务器部署两个一样的 node 应用,端口必然冲突,就会导致 node 启动报错。

那怎么办呢?有没有什么办法可以让测试环境和内测环境用两个不同的端口?

冥思苦想......

有了,可以增加配置文件来解决这个问题。

一、建立配置文件目录

首先,各个环境的配置信息是不一样的,我们在 nodejs 根目录新建一个 config 目录,创建保存各个环境配置信息的文件:

(1). 自动载入相应环境配置信息的文件:index.js

(2). 测试环境:test.js

(3). 内测环境:beta.js

目录结构如图:

二、各个配置文件写入各自配置信息

(1). index.js

var path = require(‘path‘),
    env = process.env.NODE_ENV.toLowerCase(), // 通过 NODE_ENV 来设置环境变量
    file = path.resolve(__dirname, env); // 载入配置文件

try {
    var config = module.exports = require(file);
    console.log(‘Load config: [%s] %s‘, env, file);
} catch (err) {
    console.error(‘Cannot load config: [%s] %s‘, env, file);
    throw err;
}

(2). test.js

module.exports = {
    port: 1337
}

(3). beta.js

module.exports = {
    port: 1338
}

三、设置 NODE_DEV

(1). 测试环境项目下运行  export NODE_DEV=test

(2). 内测环境项目下运行  export NODE_DEV=beta

(注:如果是 windows 系统,请把 export 改成 set)

四、应用入口文件增加配置信息

假设应用入口为 app.js,我们需要在页面里增加相关配置信息

var config = require(‘./config‘), // 配置文件
    port = config.port;

console.log(‘listen on port‘, config.port);

五、启动 node 应用

(1). 测试环境会读取 test.js 里的配置信息,也就是会应用 1337 端口;

(2). 内测环境会读取 beta.js 里的配置信息,也就是会应用 1338 端口;

关于 process.env.NODE_ENV, 可以参考这篇文章:

process.env.NODE_ENV

原文地址:https://www.cnblogs.com/lpbottle/p/8139799.html

时间: 2024-10-11 11:49:59

nodejs 如何自动化配置环境参数的相关文章

Spring Boot 探索系列 - 自动化配置篇

26. Logging Prev  Part IV. Spring Boot features  Next 26. Logging Spring Boot uses Commons Logging for all internal logging, but leaves the underlying log implementation open. Default configurations are provided for Java Util Logging,Log4J, Log4J2 an

Esxi自动化配置脚本

记录一下ESXi自动化配置脚本,脚本功能及脚本如下: 创建站点名称: 配置IP和vmotion IP及子网掩码 配置Vlan 删除默认端口组 增加vSwitch 设置NTP ##################################################################################################################### ##  $FileName: esx_conf.ps1 ##  $Version: 1.2

Nodejs安装及配置

最近工作中接触到一款新的编辑工具--Sublime Text,其中某些插件需要nodejs支持,折腾了记下,现在先把Nodejs安装和配置过程记录下来. 1.首先是下载安装包 进入官网https://nodejs.org/en/ ,根据自己情况下载安装包,这一步就不多说了 2.安装Nodejs 本人下载的 安装包为 node-v6.11.0-x64.msi,双击运行,一直下一步,就OK了 ,这一步也不多说了 3.验证 win + R 打开cmd, 输入node -v,可以查看nodejs版本,本

Windows系统下nodejs安装及配置

关于nodejs中文站,眼下活跃度最好的知识站应该是http://www.cnodejs.org/ ,而http://cnodejs.org/则活跃度较低.Express.js是nodejs的一个MVC开发框架,而且支持jade等多种模板,是Node.js上最流行的Web开发框架.这几天刚接触PhoneGap,曾经也看了一些nodejs的基础但苦于时间有限一直没机会亲自搭建一个nodejs环境,今天周末,部署了PhoneGap到Android,顺便一同搭建了一下nodejs本地环境,自己的操作过

PHP网站自动化配置的实现

一直都在用yii2做项目,有在用自动化配置,但是没有自己去配置过.中午没事去看了下yii的初始化代码,发现都是php而已! yii2初始化项目代码 所以,我们做项目肯定是可以用php做的,于是我新建了个文件夹,名为autoConfig,里面创建了个init,里面写了如下代码: if(!file_exists('./uploads/')){ if(!mkdir('./uploads/')){ echo 'fail to make ./uploads/ file!'; }else{ echo 'ma

Ansible自动化配置实战

Ansible自动化配置实战 1.Ansible基本概述 ? Ansible是一个配置管理系统configuration management system你只需要可以使用ssh访问你的服务器或设备就行. 2. Ansible能做什么 ? ? ansible可以帮助我们完成一些批量任务,或者完成一些需要经常重复的工作. ? 比如:同时在100台服务器上安装nginx服务,并在安装后启动服务. ? 比如:将某个文件一次性拷贝到100台服务器上. ? 比如:每当有新服务器加入工作环境时,你都要为新服

Ubuntu 16.04 163网易源设置(自动化配置脚本)

1.简介 1.1 介绍 ????很多时候,为了方便 操作,条件允许的情况下,直接 联网 进行安装,但是 系统 所配置的 apt源 配置的 url 地址 并非 国内的,获取资源很慢,所以 需要 配置成 国内的 源,本人 喜欢 163网易源,根据个人喜好 自行选择???? 1.2 操作系统 ## 本文操作系统 Ubuntu 16.04 amd64 ## 发行版本号 xenial # lsb_release -a ???? 2.apt 源 2.1 源备份 ## 备份原有的源配置文件 # cd /etc

Nodejs + Jshint自动化静态代码检查

1.   目的 提交代码前能够自动化静态代码检查,提高代码质量 2.   准备 1.    Nodejs安装: 官方地址:http://nodejs.org/ 安装说明:根据电脑配置下载对应的版本进行安装 检查安装是否成功: 2.    安装Grunt: GruntJs官方网址:http://www.gruntjs.org/ 安装说明: 1.进入命令行,安装grunt库 2.安装grunt-cli(安装后可以在命令行直接运行grunt命令) 3.检查是否安装成功: 3.    安装jshint

nodejs开发环境配置

此文章已经发表于本人博客. 经过几个星期的nodejs学习,从开始的小白到现在渐渐得熟悉,走过来也才算明白,现在已经入门也掌握了相关的学习方法,今天开始记录下自己学习的过程,以便日后查看. 先 说下nodejs这个哦,有人以为它是一种语言,其实不是,它是一个平台,一个建立在google的V8引擎上的js运行平台,就是解析js,并提供自己 的一些API给用户调用.从目前的情况来看,这个发展情况还算好,明天都有好多的前端后台工程师在加入,连一些大神也在关注甚至写博客,昨晚我还看见一篇 文章写道一个外