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, 可以参考这篇文章:
nodejs 如何自动化配置环境参数的更多相关文章
- Spring Boot 探索系列 - 自动化配置篇
26. Logging Prev Part IV. Spring Boot features Next 26. Logging Spring Boot uses Commons Logging f ...
- 【Spring】多数据源导致自动化配置失败问题
一.问题描述 笔者根据需求在开发过程中,需要在原项目的基础上(单数据源),新增一个数据源C,根据C数据源来实现业务.至于为什么不新建一个项目,大概是因为这只是个小功能,访问量不大,不需要单独申请个服务 ...
- Linux小记 — Ubuntu自动化配置
前言 工欲善其事,必先利其器.经过多次的重复配置ubuntu开发坏境,我终于决定花点时间总结一下,并将其写成一个自动化配置脚本.服务器实例:ubuntu 16.04,技术栈:shell,python. ...
- Sping Boot入门到实战之入门篇(四):Spring Boot自动化配置
该篇为Sping Boot入门到实战系列入门篇的第四篇.介绍Spring Boot自动化配置的基本原理与实现. Spring Boot之所以受开发者欢迎, 其中最重要的一个因素就是其自动化配置特性 ...
- Nodejs的安装配置及如何在sublimetext2中运行js
Nodejs的安装配置及如何在sublimetext2中运行js听语音 | 浏览:4554 | 更新:2015-06-16 11:29 Nodejs的安装配置及如何在sublimetext2中运行js ...
- Linux : Vim 使用与配置 (附 GitHub 自动化配置脚本)
由于经常使用 vim 编辑配置文件,有时候也会进行使用vim 编写一些脚本和c/c++ 程序,所以配置一个常用的 vim 是很是必要的.这篇博文主要是记录vim使用和配置相关的一些知识点. 关于vim ...
- Linux 小记 — Ubuntu 自动化配置
前言 工欲善其事,必先利其器.经过多次的重复配置 ubuntu 开发坏境,我终于决定花点时间总结一下,并将其写成一个自动化配置脚本.服务器实例:ubuntu 16.04,技术栈:shell,pytho ...
- Webpack 2 视频教程 002 - NodeJS 安装与配置
原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...
- (转)Terraform,自动化配置与编排必备利器
本文来自作者 QingCloud实践课堂 在 GitChat 上分享 「Terraform,自动化配置与编排必备利器」 Terraform - Infrastructure as Code 什么是 T ...
随机推荐
- 【Web前端Talk】无聊吗?写个【飞机大战】来玩吧(上篇)
01前言介绍 微信小游戏是基于微信客户端的游戏,它即点即玩,无需下载安装,体验轻便,可以和微信内的好友一起玩,比如PK.围观等,享受小游戏带来的乐趣.那如何开发一款属于自己的小游戏呢? 源码地址: h ...
- php.ini Xdebug配置
在此记录: xdebug.profiler_output_dir="H:\install\phpStudy\tmp\xdebug"xdebug.trace_output_dir=& ...
- 视频编解码的理论和实践2:Ffmpeg视频编解码
近几年,视频编解码技术在理论及应用方面都取得了重大的进展,越来越多的人想要了解编解码技术.因此,网易云信研发工程师为大家进行了归纳梳理,从理论及实践两个方面简单介绍视频编解码技术. 相关阅读推荐 &l ...
- 视频直播技术之iOS端推流
随着网络基础建设的发展和资费的下降,在这个内容消费升级的时代,文字.图片无法满足人们对视觉的需求,因此视频直播应运而生.承载了实时性Real-Time和交互性的直播云服务是直播覆盖各行各业的新动力.网 ...
- java - Builder模式实例化对象
Builder 优雅的链式调用来实现实例化对象 1. 首先在实体类中,构造一个Builder内部类,由Builder来完成Person的属性赋值,并最终执行build来完成Person的实例化 pa ...
- [乐意黎原创]Centos 7里apache(httpd)自启动
最近,Aerchi在折腾 ECS服务器 (Centos 7),每次重启后都要手动开启apache服务,好繁琐. 仔细研究了下:Apache 的服务第一.启动.终止.重启systemctl start ...
- java虚拟机-GC-GC算法
在C/C++中是由程序员自己去申请.管理和释放内存的,因此没有GC的概念.而在Java中,专门有一个用于垃圾回收的后台线程来进行监控.扫描,自动将一些无用的内存进行释放.下面介绍几种常见的GC算法. ...
- UVa 1440:Inspection(带下界的最小流)***
https://vjudge.net/problem/UVA-1440 题意:给出一个图,要求每条边都必须至少走一次,问最少需要一笔画多少次. 思路:看了好久才勉强看懂模板.良心推荐:学习地址. 看完 ...
- HDU 5521:Meeting(最短路)
http://acm.hdu.edu.cn/showproblem.php?pid=5521 Meeting Problem Description Bessie and her friend E ...
- 使用纯js写的一个分页
上图晒效果: 网上确实有很多分页的插件以及开源代码,单本是一个后台开发猿,前台css等样式还驾驭不住,所以就开始自己去写了.其实这个分页原理很简单,就是用ajax往后台传值(当前页码),后台使用lim ...