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

應用場景:node

最近用 node 重構了網站的項目,部署到測試環境的時候測試一切正常。

直到有一天,運維把代碼上線到內測環境的時候......

忽然發現:內測環境和測試環境居然是同一臺服務器,只不過是把代碼放在了兩個不臺的位置而已~

這樣的話,在同一臺服務器部署兩個同樣的 node 應用,端口必然衝突,就會致使 node 啓動報錯。

那怎麼辦呢?有沒有什麼辦法可讓測試環境和內測環境用兩個不一樣的端口?

左思右想......

有了,能夠增長配置文件來解決這個問題。

 

1、創建配置文件目錄windows

首先,各個環境的配置信息是不同的,咱們在 nodejs 根目錄新建一個 config 目錄,建立保存各個環境配置信息的文件:服務器

(1). 自動載入相應環境配置信息的文件:index.jsapp

(2). 測試環境:test.js運維

(3). 內測環境:beta.js測試

目錄結構如圖:網站

 

2、各個配置文件寫入各自配置信息ui

(1). index.jsspa

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.jscode

module.exports = {
    port: 1337
}

(3). beta.js

module.exports = {
    port: 1338
}

 

3、設置 NODE_DEV

(1). 測試環境項目下運行  export NODE_DEV=test 

(2). 內測環境項目下運行  export NODE_DEV=beta 

(注:若是是 windows 系統,請把 export 改爲 set)

 

4、應用入口文件增長配置信息

假設應用入口爲 app.js,咱們須要在頁面裏增長相關配置信息

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

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

 

5、啓動 node 應用

(1). 測試環境會讀取 test.js 裏的配置信息,也就是會應用 1337 端口;

(2). 內測環境會讀取 beta.js 裏的配置信息,也就是會應用 1338 端口;

 

關於 process.env.NODE_ENV, 能夠參考這篇文章:

process.env.NODE_ENV

相關文章
相關標籤/搜索