Suche…


Erweiterte Umgebungskonfigurationen

Für komplexere Anwendungen sollten Sie ein `` settings.json`-Objekt mit mehreren Umgebungsvariablen erstellen.

if(Meteor.isServer){
  Meteor.startup(function()){
    // this needs to be run on the server
    var environment, settings;

    environment = process.env.METEOR_ENV || "development";

    settings = {
      development: {
        public: {
          package: {
            name: "jquery-datatables",
            description: "Sort, page, and filter millions of records. Reactively.",
            owner: "LumaPictures",
            repo: "meteor-jquery-datatables"
          }
        },
        private: {}
      },
      staging: {
        public: {},
        private: {}
      },
      production: {
        public: {},
        private: {}
      }
    };

    if (!process.env.METEOR_SETTINGS) {
      console.log("No METEOR_SETTINGS passed in, using locally defined settings.");
      if (environment === "production") {
        Meteor.settings = settings.production;
      } else if (environment === "staging") {
        Meteor.settings = settings.staging;
      } else {
        Meteor.settings = settings.development;
      }
      console.log("Using [ " + environment + " ] Meteor.settings");
    }
  });
}

App-Parameter mit METEOR_SETTINGS angeben

Die Umgebungsvariable METEOR_SETTINGS kann JSON-Objekte akzeptieren und macht dieses Objekt im Meteor.settings Objekt Meteor.settings . settings.json in Ihrem App-Stammverzeichnis eine settings.json mit Konfigurationsinformationen hinzu.

{
  "public":{
    "ga":{
      "account":"UA-XXXXXXX-1"
    }
  }
}

Dann müssen Sie Ihre Anwendung mit Ihrer Einstellungsdatei starten.

# run your app in local development mode with a settings file
meteor --settings settings.json

# or bundle and prepare it as if you're running in production
# and specify a settings file
meteor bundle --directory /path/to/output
cd /path/to/output
MONGO_URL="mongodb://127.0.0.1:27017" PORT=3000 METEOR_SETTINGS=$(cat /path/to/settings.json) node main.js

Auf diese Einstellungen kann dann über Meteor.settings zugegriffen und in Ihrer App verwendet werden.

Meteor.startup(function(){
  if(Meteor.isClient){
    console.log('Google Analytics Account', Meteor.settings.public.ga.account);
  }
});

Umgebungserkennung auf dem Server

Umgebungsvariablen stehen dem Server auch über das Objekt process.env .

if (Meteor.isServer) {
  Meteor.startup(function () {
    // detect environment by getting the root url of the application
    console.log(JSON.stringify(process.env.ROOT_URL));

    // or by getting the port
    console.log(JSON.stringify(process.env.PORT));

    // alternatively, we can inspect the entire process environment
    console.log(JSON.stringify(process.env));
  });
}

Erkennung der Clientumgebung mit Meteor-Methoden

Um die Umgebung auf dem Server zu ermitteln, müssen Sie eine Hilfemethode auf dem Server erstellen, da der Server die Umgebung ermittelt, in der er sich befindet, und dann die Hilfemethode vom Client aus aufrufen. Grundsätzlich geben wir nur die Umgebungsinformationen vom Server an den Client weiter.

//------------------------------------------------------------------------------------------------------
// server/server.js
// we set up a getEnvironment method

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

//------------------------------------------------------------------------------------------------------
// client/main.js
// and then call it from the client

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

Erkennung der Clientumgebung mit NODE_ENV

Seit Meteor 1.3 macht Meteor nun NODE_ENV Variable NODE_ENV auf dem Client NODE_ENV .

if (Meteor.isClient) {
  Meteor.startup(function () {
    if(process.env.NODE_ENV === "testing"){
      console.log("In testing...");
    }
    if(process.env.NODE_ENV === "production"){
      console.log("In production...");
    }
  });
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow