Променливите на средата не се задават при внедряване в Azure Cloud Service чрез 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.

Освен това можем да използваме модул трета част на чист 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 runtime, тогава можете да получите настройките в скрипта Nodejs. Мисля, че можете да използвате azure.RoleEnvironment в azure SDK за възел. Но е наличен само в Worker Role. - person Gary Liu; 29.01.2016

Можете да го направите чрез редактиране или в web.config или iisnode.yml. Вижте този отговор

Задайте променлива на средата Node.js (NODE_ENV ) в iisnode към Производство/Разработка/Тест

person AIDAN CASEY    schedule 27.01.2016