Мне нужно использовать разные конфигурации поставщиков учетных записей, когда приложение метеоритов работает как среда разработки, тестирования или производства.
Как известно метеоритное приложение, если оно работает в среде разработки, тестирования или производства?
Ответ 1
Так как Meteor 1.3 эти флаги работают из коробки:
Meteor.isDevelopment
Meteor.isProduction
Meteor.isTest
Meteor.isAppTest
Ответ 2
На сервере:
var inDevelopment = function () {
return process.env.NODE_ENV === "development";
};
var inProduction = function () {
return process.env.NODE_ENV === "production";
};
Meteor устанавливает переменную среды NODE_ENV в "development" при запуске meteor
. В процессе производства вы можете установить переменную так, как хотите, иначе она будет по умолчанию "production".
Обновление. Я создал интеллектуальный пакет, позволяющий этому работать на клиенте и сервере.
mrt add allow-env
Просто установите правила разрешения в файле сервера.
allowEnv({
NODE_ENV: 1
});
Ответ 3
Вы можете использовать Meteor.settings
в сочетании с опцией --settings
, используемой при запуске meteor run
или meteor deploy
.
Например, чтобы запустить в режиме dev
, создайте файл JSON, назовите его meteorConfigDev.json и поместите в него следующее:
{
"public" : {
"mode" : "dev"
},
"anotherProperty" : "anotherValue"
}
Запустите приложение, используя
meteor --settings meteorConfigDev.json
На сервере и на клиенте вы можете получить доступ к "режиму", используя:
Meteor.settings.public.mode //in this case it will be "dev"
Обратите внимание, что настройки в "общедоступном" доступны как на сервере, так и на клиенте, тогда как все остальное (в данном случае "anotherProperty" ) доступно только на сервере.
Затем у вас могут быть разные файлы конфигурации для разных сред.
Ответ 4
Очень легко. Я запускаю свое приложение в пяти (да, пять!) Разных средах. Я просто использую оператор switch на ROOT_URL, как показано ниже, для четырех разных сред. Конечно, вы можете использовать if-else, если у вас есть только две среды. Работает на сервере. Просто создайте новый файл с именем startup.js и используйте пример кода ниже. Ура!
switch (process.env.ROOT_URL) {
case "http://www.production.com/":
BLOCK OF CODE HERE
break;
case "http://www.staging.com/":
BLOCK OF CODE HERE
break;
case "http://www.development.com/":
BLOCK OF CODE HERE
break;
case "http://localhost:3000/":
BLOCK OF CODE HERE
break;
}
В общем, формат оператора switch в javascript равен
switch(expression) {
case n:
code block
break;
case n:
code block
break;
default:
default code block
}
ОБНОВЛЕНИЕ: Обратите внимание, что теперь Meteor предоставляет Meteor.absoluteUrl()
, который похож на process.env.ROOT_URL
с добавлением дополнительных функций. См. docs.
Ответ 5
В github есть открытый запрос на перенос в github. Комментарий/Голосуйте за него, поэтому он скорее всего будет включен!
Ответ 6
Очень грязный способ выполнить этот
https://github.com/possibilities/meteor-environment-hooks
Примечание: интерфейс в порядке IMHO, реализация запутана