应用场景:

最近用 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

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

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

    26. Logging Prev  Part IV. Spring Boot features  Next 26. Logging Spring Boot uses Commons Logging f ...

  2. 【Spring】多数据源导致自动化配置失败问题

    一.问题描述 笔者根据需求在开发过程中,需要在原项目的基础上(单数据源),新增一个数据源C,根据C数据源来实现业务.至于为什么不新建一个项目,大概是因为这只是个小功能,访问量不大,不需要单独申请个服务 ...

  3. Linux小记 — Ubuntu自动化配置

    前言 工欲善其事,必先利其器.经过多次的重复配置ubuntu开发坏境,我终于决定花点时间总结一下,并将其写成一个自动化配置脚本.服务器实例:ubuntu 16.04,技术栈:shell,python. ...

  4. Sping Boot入门到实战之入门篇(四):Spring Boot自动化配置

    该篇为Sping Boot入门到实战系列入门篇的第四篇.介绍Spring Boot自动化配置的基本原理与实现.   Spring Boot之所以受开发者欢迎, 其中最重要的一个因素就是其自动化配置特性 ...

  5. Nodejs的安装配置及如何在sublimetext2中运行js

    Nodejs的安装配置及如何在sublimetext2中运行js听语音 | 浏览:4554 | 更新:2015-06-16 11:29 Nodejs的安装配置及如何在sublimetext2中运行js ...

  6. Linux : Vim 使用与配置 (附 GitHub 自动化配置脚本)

    由于经常使用 vim 编辑配置文件,有时候也会进行使用vim 编写一些脚本和c/c++ 程序,所以配置一个常用的 vim 是很是必要的.这篇博文主要是记录vim使用和配置相关的一些知识点. 关于vim ...

  7. Linux 小记 — Ubuntu 自动化配置

    前言 工欲善其事,必先利其器.经过多次的重复配置 ubuntu 开发坏境,我终于决定花点时间总结一下,并将其写成一个自动化配置脚本.服务器实例:ubuntu 16.04,技术栈:shell,pytho ...

  8. Webpack 2 视频教程 002 - NodeJS 安装与配置

    原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...

  9. (转)Terraform,自动化配置与编排必备利器

    本文来自作者 QingCloud实践课堂 在 GitChat 上分享 「Terraform,自动化配置与编排必备利器」 Terraform - Infrastructure as Code 什么是 T ...

随机推荐

  1. 【Linux】Linux相关资料

    linux相关技术资料: linux技术资料大全: http://t.cn/zYNBwFs

  2. 教你做一个牛逼的DBA(在大数据下)

    一.基本概念 大数据量下,搞mysql,以下概念需要先达成一致 1)单库,不多说了,就是一个库 2)分片(sharding),水平拆分,用于解决扩展性问题,按天拆分表 3)复制(replication ...

  3. spring boot之security

    上一节的时候,我们打开了springboot的端点,有一些数据是非常敏感的,比如/shutdown. 这一节,我们要给一些敏感信息加上权限控制. spring boot本身的security模块就很好 ...

  4. kubernetes实战篇之nexus oss服务器部署及基于nexus的docker镜像仓库搭建

    系列目录 Nexus oss仓库管理平台搭建 Nexus是一款仓库管理工具,支持Npm,bower,maven,nuget,apt,yum甚至docker,helm等各种仓库,说的通俗以下,就是私服镜 ...

  5. 5分钟学会Java9-Java11的七大新特性

    现在Java有多元化的发展趋势,既有JS又有C++还有C#的影子,不学习那是不行滴. 来来来,花5分钟看看Java9-Java11的七大新特性,还有代码样例. Java11 发布了,然而很多公司还在用 ...

  6. 【安装】Hadoop2.8.0搭建过程整理版

    Hadoop搭建过程 前期环境搭建主要分为软件的安装与配置文件的配置,集成的东西越多,配置项也就越复杂. Hadoop集成了一个动物园,所以配置项也比较多,且每个版本之间会有少许差异. 安装的方式有很 ...

  7. Jquery实现搜索功能

    <script> //搜索功能 (function ($) { jQuery.expr[':'].Contains = function (a, i, m) { return (a.tex ...

  8. JIRA7.10迁移

    1.准备环境 系统环境:Centos7.3  防火墙和Selinux管闭 [root@localhost ~]# useradd jira [root@localhost ~]# yum instal ...

  9. 趣解 ceph rgw multisite data sync 机制

    multisite是ceph rgw对象数据异地容灾备份的一个有效方案,笔者希望深入理解该技术,并应用于生产环境中,然而rgw的这部分代码晦涩难懂,笔者多次尝试阅读,仍云里雾里不解其意,最终流着泪咬着 ...

  10. kafka迁移topic

    1. 准备移动 这里假设要移动的topic名称为:topicA.topicB vim topics-to-move.json {"topics": [{"topic&qu ...