2014-01-27 45 views
4

當試圖在Sails.js的config/server.js文件中進行配置更改時,我發現自己無法訪問NODE_ENV變量。我想配置express屬性的serverOptions標誌並綁定ssl證書 - 但僅限於生產。在運行時在Sails.js的server.js配置中訪問NODE_ENV

假設我開始與node app.js --prod

服務器這不起作用:

module.exports = { ... }; 
console.log(process.env.NODE_ENV); // undefined 

但這並工作:

module.exports = { ... }; 
setTimeout(function() { 
    console.log(process.env.NODE_ENV); // production 
}, 1000); 

基本上所有我想要做的是:

module.exports = (function() { 
    var env = process.env.NODE_ENV, 
    ret = { express: {} }; 

    if (env == 'production') { 
    ret.express.serverOptions = { key: ..., cert: ... }; 
    } 

    return ret; 
}()); 

我見過類似的答案,如https://stackoverflow.com/a/21152780/986408,但我不明白他們應該如何工作,當我的不。

回答

7

運行你的應用程序是這樣,而不是:

NODE_ENV=production node app.js 

sails lift --prod 
在應用程序根目錄

。您嘗試使用的命令行開關是爲了傳遞給sails可執行文件,而不是直接傳遞給您的應用程序。

+0

感謝您的建議,我會在後天查看它。這也會永遠起作用嗎?像'永遠啓動app.js --prod'? – codepushr

+0

你需要做'NODE_ENV =生產永遠開始app.js' –

+0

'帆升降機 - prod'沒有爲我工作,再次無法訪問它,但你的第一個建議工作得很好! – codepushr