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

Как мы сообщаем iisnode для запуска нашей среды приложений Node.js в процессе производства/разработки/тестирования?

Мы успешно получили наше приложение Node.js, работающее с iisnode, но process.env.NODE_ENV выходит как "undefined".

В настоящий момент наш файл web.config написан следующим образом:

<configuration>
  <system.webServer>

    <handlers>
      <add name="iisnode" path="app.js" verb="*" modules="iisnode" />
    </handlers>

    <rewrite>
      <rules>
        <rule name="app">
          <match url="/*" />
          <action type="Rewrite" url="app.js" />
        </rule>
      </rules>
    </rewrite>

    <security>
      <requestFiltering>
        <hiddenSegments>
          <add segment="node_modules" />
        </hiddenSegments>
      </requestFiltering>
    </security>    

  </system.webServer>
  <appSettings>
    <add key="NODE_ENV" value="production" />
  </appSettings>
</configuration>

Ответ 1

Joachim находится прямо над тем, что добавление <iisnode node_env="production" /> в web.config позволяет контролировать значение NODE_ENV. Другим способом является добавление файла iisnode.yml рядом с вашим web.config, а там spcify значение NODE_ENV как node_env: production. Другие настройки, которые вы можете использовать в iisnode.yml в https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/iisnode.yml

Ответ 2

Как вы передаете любую переменную среды, например, PORT?

Ответ 3

Для ясности файл web.config будет выглядеть следующим образом:

<configuration>
  <system.webServer>

    <handlers>
      <add name="iisnode" path="app.js" verb="*" modules="iisnode" />
    </handlers>

    <rewrite>
      <rules>
        <rule name="app">
          <match url="/*" />
          <action type="Rewrite" url="app.js" />
        </rule>
      </rules>
    </rewrite>

    <security>
      <requestFiltering>
        <hiddenSegments>
          <add segment="node_modules" />
        </hiddenSegments>
      </requestFiltering>
    </security>    

    <iisnode NODE_ENV="production" />            <=== Add env required here
  </system.webServer>
</configuration>