С метеором совсем не работал и с node.js опыта нет, буду только познавать. Но работу делать нужно и в связи с эти хотел посоветоваться. Учусь походу))) Проблема заключается в том, что у меня есть глобальная переменная NODE_ENV=production которую нужно получить на сервере, а потом вывести на клиенте для того что бы сделать проверку это продакшн или нет. Ход моих мыслей таков
сначала я задаю переменную NODE_ENV=production
потом что бы получить ее на сервере я пишу следующее var devEnv = process.env.NODE_ENV
и теперь вот думаю как мне devEnv вывести на клиенте в скрипте что бы осуществить проверку на то, в какой среде работает приложение.
Спасибо Всем кто направит в правильное русло по этой задаче!!!
Тебе критично задавать продакшен или дев через env переменную?
У метеора есть встроенный механизм отличения метеора запущенного в проде и в девелопменте: когда метеор запущен без флага --production, значения Meteor.isProduction === false и Meteor.isDevelopment === true. Для метеора, запущенного из бандла или локально с флагом --production эти значения соответственно противоположные. https://docs.meteor.com/api/core.html#Meteor-isDevelopment
Плюс есть механизм запуска метеора с разным конфигурациями (я использую его для того чтобы иметь разные ключи для oauth на локальном домене и продакшене). Для этого
Создаешь json файл в private/dev.config.json. Пример моего:
Доступаешься к значениям так: Meteor.settings['twitterOauth']['consumerKey']. Для продакшена соответственно имеешь другой файл, который указываешь при деплойменте.
И в общем виде решение будет через в виде передачи значения через коллекцию. Если не знаешь как - отпишись, я распишу. Но сами авторы фреймверка рекомендуют использовать файл настроек: https://guide.meteor.com/deployment.html#environment
Наверное предложеный вариант самый оптимальный в виде передачи значения через коллекцию. Если будет не сложно, можно пожалуйста обьяснить что к чему? Расскажу подробнее: у нас есть проект который запускается через докер и есть 4 файла.yaml (dev, prod, demo, qa). Вот мы изначально хотели в эти 4 файла вписать глобальные переменные и что бы при билде мы определяли среду работы приложения. Мы это делаем для того что бы отключать гугл аналитикс везде кроме продакшн. С самого начало было такое решение этой проблемы, я брал домен из config/JSON файла с помощью Meteor.settings.siteDomain и делал проверку, но мне сказали что это костыльное решение=(
В конечном итоге мною было использовано решение которое заключается в виде передачи значения через коллекцию. Хочу рассказать поэтапно что я сделал, да бы понять ничего ли я не упустил:
Я в папке config создал файл settings.json, в котором я в public поместил “env”
“public”: {
“siteDomain”: “/////////”,
“env”: “development”,
“ga”: {
“account”: “/////////”
}
Вот хорошая статья которая многое обьясняет: https://themeteorchef.com/tutorials/making-use-of-settings-json
потом я вызываю meteor --settings config/settings.json
и в конечном итоге на клиенте использую Meteor.settings.public.env
Но мне нужно будет еще в Jenkins поменять скрипт, который будет формировать этот файл json c разными значениями для env . Будет или production или development или qa или demo