Переменные среды не задаются при развертывании в облачной службе Azure через Visual Studio

Возникли проблемы с переменными среды в облачных службах Azure. Я пытаюсь установить переменную среды "NODE_ENV" во время развертывания через файл ServiceDefentition.csdef.

Переменная должна быть прочитана моим приложением node.js через process.env.NODE_ENV.

Документация для этого не очень обширна (поскольку кажется, что это очень просто сделать), но это то, за чем я следил: link1 ссылка2

Раздел файла ServiceDefinition, который у меня есть, следующий:

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="userApiServer" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
  <WebRole name="userApiWebRole" vmsize="Large">
    ...
    <Runtime>
      <Environment>
        <Variable name="NODE_ENV" value="dev" />
      </Environment>
    </Runtime>
    ...
  </WebRole>
</ServiceDefinition>

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

Когда я возился с подходом xpaths, я обнаружил, что мои настройки конфигурации создаются в экземпляре, поэтому файл определения читается.

Есть ли какие-то общие (или необычные) ошибки или скрытые детали, которые я упускаю, потому что для чего-то, казалось бы, очень простого, у меня много проблем с этим.


person Mitch    schedule 27.01.2016    source источник


Ответы (2)


Правильно установить переменную node_env в web.config и iisnode.yml, как сказал @AIDAN CASEY.

Кроме того, мы можем использовать чистый модуль 3-й части Node.js dotenv. Просто нужно создать файл с именем .env с содержимым:

node_env=production

подключите и инициализируйте модуль в скрипте Nodejs:

require('dotenv').load();
person Gary Liu    schedule 28.01.2016
comment
Извините за дополнительный вопрос, но можно ли использовать xpaths (или аналогичный) для извлечения параметров конфигурации при использовании WebConfig при создании переменных среды; аналогично тому, как это достигается в ServiceDefinition? И если да, будет ли этот подход динамически изменять переменные среды при изменении конфигурации? - person Mitch; 28.01.2016
comment
Если вы имеете в виду, что хотите настроить пользовательские настройки в файлах .cscfg и .csdef, которые будут установлены во время выполнения node.js, вы можете получить настройки в скрипте Nodejs. Я думаю, вы можете использовать azure.RoleEnvironment в Azure SDK для узла. Но это доступно только в рабочей роли. - person Gary Liu; 29.01.2016

Вы можете сделать это путем редактирования либо в web.config, либо в iisnode.yml. Проверьте этот ответ

Установить переменную среды Node.js (NODE_ENV ) в iisnode для производства/разработки/тестирования

person AIDAN CASEY    schedule 27.01.2016