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