1. 程式人生 > >nodejs 如何自動化配置環境參數

nodejs 如何自動化配置環境參數

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 如何自動化配置環境參數