2014-05-21 54 views
0

我有一個env。中立的配置是EnableEmailCheck。如果EnableEmailCheck = true,那麼電子郵件驗證將發生,如果它設置爲false,則應用程序將不會執行電子郵件驗證。閱讀環境neutral配置NodeJS的價值

我需要了解如何做這樣的事情在

的NodeJS
  1. 配置文件應該是什麼格式?我想我可以保持鍵值對它以.json文件

  2. 我怎樣才能讀取這個的NodeJS配置值

  3. 如果配置文件的值更改爲重新啓動應用程序的NodeJS需要它服務器以反映更改

如果emailvalidation功能中存在問題,則此配置值將會更改。然後該值將被關閉;在這種情況下,它將被應用工程師設置爲false。

+0

而json如何比javascript本身更好,或者換句話說,將你的配置放在一個單獨的js文件中,你可以簡單地要求並賦值給一個配置變量? –

+0

當你想在它發生變化時想要加載它時,要求有點棘手。 –

+0

有require.cache,它是一個包含所有當前加載模塊的散列表。清除模塊,然後使用require()重新加載它。就像這樣:delete require.cache [require.resolve(moduleName)]; var myModule = require(moduleName); – Ben

回答

0

我將它保存在JSON格式並在其上添加監視: config.json內容:

{ 
    "env": 
    { 
    "EnableEmailCheck": true; 
    } 
} 

加載config.json文件在啓動時,當它改變:

var config = null; 
var fs = require('fs'); 

function loadConfig(fileName) 
{ 
    var data = fs.readFileSync(fileName ); 
    return JSON.parse(data); 
} 
function useConfig() 
{ 
    if(config.env.EnableEmailCheck) 
    { 
    // do your stuff; 
    } 

} 
//load it at start 
config = loadConfig("config.json"); 
useConfig(); 

//add watch for changes 
fs.watchFile("config.json", function() 
{ 
    config = loadConfig("config.json"); 
    useConfig(); 
}); 
+0

感謝您發佈答案。我在這裏有一個問題。可以調用readFileSync()方法,因爲它是同步的。 – user2835845

+0

使用文件時,我寧願調用同步功能,以確保我立即閱讀。但在這個例子中不應該有任何區別,同步和異步選項都可以。只是你可能需要對異步方式進行一些調整,比如解析回調中的文件數據。 –

+0

同意..在這種情況下,我想知道最好的方法。 – user2835845