Подтвердить что ты не робот

Как известно метеоритное приложение, если оно работает в среде разработки, тестирования или производства?

Мне нужно использовать разные конфигурации поставщиков учетных записей, когда приложение метеоритов работает как среда разработки, тестирования или производства.

4b9b3361

Ответ 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. Комментарий/Голосуйте за него, поэтому он скорее всего будет включен!