Я использую node.js + express.js + everyauth.js. Я переместил всю свою логику Everyauth в файл модуля
var login = require('./lib/everyauthLogin');
внутри я загружаю свой конфигурационный файл oAuth с комбинациями ключ / секрет:
var conf = require('./conf');
.....
twitter: {
consumerKey: 'ABC',
consumerSecret: '123'
}
Эти коды различны для разных сред - разработка / постановка / производство, поскольку обратные вызовы относятся к разным URL-адресам.
Королева Как мне установить их в конфигурации среды для фильтрации по всем модулям или я могу передать путь непосредственно в модуль?
Установить в env:
app.configure('development', function(){
app.set('configPath', './confLocal');
});
app.configure('production', function(){
app.set('configPath', './confProduction');
});
var conf = require(app.get('configPath'));
Пройти в
app.configure('production', function(){
var login = require('./lib/everyauthLogin', {configPath: './confProduction'});
});
? надеюсь, что это имеет смысл
Ответы:
Мое решение,
загрузить приложение, используя
Затем настройте
config.js
как функцию, а не объектЗатем в соответствии с решением Jans загрузите файл и создайте новый экземпляр, который мы могли бы передать в значение, если необходимо, в этом случае
process.env.NODE_ENV
глобальный, поэтому не нужен.Затем мы можем получить доступ к свойствам объекта конфигурации точно так же, как и раньше.
источник
new
необходимым?new
. Я следую вconfig.js
....Config = function(){...}; module.exports = Config()
У вас также может быть файл JSON с NODE_ENV в качестве верхнего уровня. IMO, это лучший способ выразить настройки конфигурации (в отличие от использования скрипта, который возвращает настройки).
Пример для env.json:
источник
Очень полезное решение - использовать модуль конфигурации .
после установки модуля:
Вы можете создать файл конфигурации default.json . (вы можете использовать объект JSON или JS с расширением .json5)
Например
Эта конфигурация по умолчанию может быть переопределена файлом конфигурации среды или локальным файлом конфигурации для локальной среды разработки:
production.json может быть:
development.json может быть:
На вашем локальном ПК у вас может быть local.json, который переопределяет всю среду, или у вас может быть определенная локальная конфигурация как local-production.json или local-development.json .
Полный список порядка загрузки .
Внутри вашего приложения
В вашем приложении вам нужно только потребовать конфигурацию и необходимый атрибут.
Загрузите приложение
загрузите приложение, используя:
или установив правильную среду с помощью forever или pm2
Навсегда:
PM2 (через оболочку):
PM2 (через .json):
process.json
А потом
Это очень чистое решение, которое позволяет легко настраивать разные файлы конфигурации для среды производства / подготовки / разработки, а также для локальной настройки.
источник
Вкратце
Такая установка проста и элегантна:
env.json
common.js
app.js
Для запуска в производственном режиме:
$ NODE_ENV=production node app.js
В деталях
Это решение взято из: http://himanshu.gilani.info/blog/2012/09/26/bootstraping-a-node-dot-js-app-for-dev-slash-prod-environment/ , проверьте его для более детально.
источник
Мы делаем это, передавая аргумент при запуске приложения с окружением. Например:
Затем мы загружаем
dev.js
в app.js как наш файл конфигурации. Вы можете проанализировать эти параметры с помощью optparse-js .Теперь у вас есть несколько основных модулей, которые зависят от этого файла конфигурации. Когда вы пишете их как таковые:
И вы можете назвать это
app.js
так:источник
app.configure('development
кода app.js , но посмотрю, смогу ли я использовать это решение с этимЭлегантный способ - использовать
.env
файл для локального переопределения производственных настроек. Нет необходимости в переключателях командной строки. Нет необходимости во всех этих запятых и скобках вconfig.json
файле. Смотрите мой ответ здесьПример: на моей машине
.env
файл такой:Мой локальный
.env
переопределяет любые переменные среды. Но на промежуточных или производственных серверах (возможно, они находятся на heroku.com) переменные среды предварительно настроены на этапNODE_ENV=stage
или производствоNODE_ENV=prod
.источник
установить переменную среды на сервере развертывания (например, как NODE_ENV = production). Вы можете получить доступ к своей переменной среды через process.env.NODE_ENV. Найдите следующий файл конфигурации для глобальных настроек
base содержит общий конфиг для всех сред.
затем импортируйте в другие модули, например
Удачного кодирования ...
источник
Как насчет того, чтобы сделать это более элегантным способом с помощью модуля nodejs-config .
Этот модуль может установить конфигурационную среду на основе имени вашего компьютера. После этого, когда вы запросите конфигурацию, вы получите значение для конкретной среды.
Например, предположим, что у вас есть две машины разработки с именами pc1 и pc2 и производственная машина с именем pc3. Когда вы когда-либо запрашиваете значения конфигурации в своем коде на pc1 или pc2, вы должны получить конфигурацию среды «разработки», а на pc3 вы должны получить конфигурацию среды «производственной». Этого можно добиться так:
Теперь создайте новый экземпляр конфигурации со следующим синтаксисом.
Теперь вы можете получить любое значение конфигурации, не беспокоясь о такой среде:
источник
В этом ответе нет ничего нового. Это похоже на то, что упомянул @andy_t. Но я использую схему ниже по двум причинам.
Чистая реализация без внешних зависимостей npm
Объедините параметры конфигурации по умолчанию с параметрами среды.
Реализация Javascript
Обычно я использую машинописный текст в моем проекте узла. Ниже скопирована моя фактическая реализация.
Реализация машинописного текста
источник