2013-01-06 66 views
8

有人想通過使用Meteor.js來檢測主機環境的語法或模式嗎?我有Heroku buildpack工作,並有一個開發/生產環境,但我對如何讓我的應用程序檢測它運行在哪個環境中留下了一片空白。使用Meteor.js檢測環境?

有沒有辦法讓節點。 js檢測它在哪個端口上運行?我希望有可能是像app.address()。端口的低級別,但似乎並沒有工作...

編輯:這是爲我工作的解決方案。請注意,需要在服務器上運行以下內容,因此需要將其包含在server \ server.js或類似的文件中。

if (Meteor.is_server) { 
    Meteor.startup(function() { 
     // we want to be able to inspect the root_url, so we know which environment we're in 
     console.log(JSON.stringify(process.env.ROOT_URL)); 

     // in case we want to inspect other process environment variables 
     //console.log(JSON.stringify(process.env)); 
    }); 
} 

也創造了以下內容:

Meteor.methods({ 
    getEnvironment: function(){ 
    if(process.env.ROOT_URL == "http://localhost:3000"){ 
     return "development"; 
    }else{ 
     return "staging"; 
    } 
    } 
});  

它允許客戶端上的以下內容:

Meteor.call("getEnvironment", function (result) { 
     console.log("Your application is running in the " + result + "environment."); 
}); 

感謝拉胡爾!

+0

如果您想發佈可以工作的代碼,只需編輯自己的問題並提及它對您有用,或者發佈代碼答案。編輯我的答案並不是真正適合做這件事的地方。 :) – Rahul

+0

哎呀!排序出來。再次感謝您的幫助! :) – AbigailW

+0

這段代碼是非常有用的,但作爲FYI它最初返回未定義(我相信因爲異步滯後) 當我添加錯誤作爲第一個參數,並將其包含在條件記錄錯誤,它的工作。 –

回答

12

您可以檢查process.env變量在服務器上找到有關當前環境信息,包括端口:

{ TERM_PROGRAM: 'Apple_Terminal', 
    TERM: 'xterm-256color', 
    SHELL: '/bin/bash', 
    TMPDIR: '/var/folders/y_/212wz0cx5vs20yd7y2psnh7m0000gp/T/', 
    Apple_PubSub_Socket_Render: '/tmp/launch-hch25f/Render', 
    TERM_PROGRAM_VERSION: '309', 
    OLDPWD: '/usr/local/meteor/bin', 
    TERM_SESSION_ID: '3FE307A0-B8FC-41AD-B1EB-FCFA0B8B25D1', 
    USER: 'Rahul', 
    COMMAND_MODE: 'unix2003', 
    SSH_AUTH_SOCK: '/tmp/launch-gFCBXS/Listeners', 
    __CF_USER_TEXT_ENCODING: '0x1F6:0:0', 
    Apple_Ubiquity_Message: '/tmp/launch-QAWKHL/Apple_Ubiquity_Message', 
    PATH: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin', 
    PWD: '/Users/Rahul/Documents/Sites/test', 
    NODE_PATH: '/usr/local/meteor/lib/node_modules', 
    SHLVL: '1', 
    HOME: '/Users/Rahul', 
    LOGNAME: 'Rahul', 
    LC_CTYPE: 'UTF-8', 
    SECURITYSESSIONID: '186a4', 
    PORT: '3001', 
    MONGO_URL: 'mongodb://127.0.0.1:3002/meteor', 
    ROOT_URL: 'http://localhost:3000' } 
+0

啊哈!我認爲這可能會訣竅。正確的線索讓我回到正軌! – AbigailW