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