Zoeken…


Geavanceerde omgevingsconfiguraties

Voor complexere toepassingen wilt u een object `` settings.json` bouwen met behulp van meerdere omgevingsvariabelen.

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-parameters opgeven met METEOR_SETTINGS

De omgevingsvariabele METEOR_SETTINGS kan JSON-objecten accepteren en zal dat object weergeven in het Meteor.settings object. Voeg eerst een settings.json aan uw app-root met wat configuratie-informatie.

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

Vervolgens moet u uw toepassing starten met uw instellingenbestand.

# 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

Deze instellingen zijn vervolgens toegankelijk via Meteor.settings en kunnen in uw app worden gebruikt.

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

Omgevingsdetectie op de server

Omgevingsvariabelen zijn ook beschikbaar voor de server via het process.env object.

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

Detectie van clientomgeving met behulp van Meteor-methoden

Om de omgeving op de server te detecteren, moeten we een helpermethode op de server maken, omdat de server zal bepalen in welke omgeving deze zich bevindt en vervolgens de helpermethode van de client aanroept. Kortom, we geven de omgevingsinformatie gewoon door van de server naar de client.

//------------------------------------------------------------------------------------------------------
// 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.");
});

Detectie van clientomgeving met NODE_ENV

Vanaf Meteor 1.3 geeft Meteor nu de NODE_ENV variabele standaard weer op de client.

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow