nodejs 如何自動化配置環境參數
阿新 • • 發佈:2017-12-31
module window tar con config 信息 啟動報錯 info 沖突
應用場景:
最近用 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 如何自動化配置環境參數