2013-01-06 27 views
8

Ktoś wymyślił składnię lub wzór do wykrycia środowiska hostingowego za pomocą Meteor.js? Mam działające pakiety Heroku i mam środowisko deweloperskie/produkcyjne, ale zaczynam rysować pustkę informującą, w jaki sposób moja aplikacja ma wykryć, w jakim środowisku działa.Wykrywanie środowiska za pomocą Meteor.js?

Czy istnieje sposób na uzyskanie węzła. js wykryć port, na którym działa? Miałem nadzieję, że może być coś niskiego poziomu, np. App.address(). Port, ale to nie działa ...

Edytuj: To jest rozwiązanie, które działało dla mnie. Zwróć uwagę, że następujące czynności muszą być uruchomione na serwerze, więc muszą być zawarte w serwerze \ server.js lub podobnym pliku.

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)); 
    }); 
} 

stworzony również:

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

co pozwala na następujące po stronie klienta:

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

Dzięki Rahul!

+0

Jeśli chcesz opublikować kod, który zadziałał, po prostu edytuj swoje własne pytanie i wspomnij, że zadziałało dla Ciebie, lub opublikuj odpowiedź za pomocą kodu. Edytowanie mojej odpowiedzi nie jest właściwym miejscem na zrobienie tego. :) – Rahul

+0

Ups! Posortowałem rzeczy. Jeszcze raz dziękuję za pomoc! :) – AbigailW

+0

Ten kod jest bardzo pomocny, ale jako FYI początkowo wrócił undefined (wierzę z powodu opóźnienia asynchronicznego) Kiedy dodałem błąd jako pierwszy argument i zawarłem go w warunku zapisania błędu, zadziałało. –

Odpowiedz

12

Można sprawdzać zmienną process.env na serwerze, aby znaleźć informacje na temat obecnej sytuacji w tym porcie:

{ 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

Ah ha! Myślę, że to może załatwić sprawę. Właśnie właściwy trop, który pomoże mi wrócić na właściwe tory! – AbigailW

Powiązane problemy