将iisnode中的Node.js环境变量(NODE_ENV)设置为生产/开发/测试

时间:2013-10-21 05:24:29

标签: node.js iis

我们如何告诉iisnode在生产/开发/测试中运行我们的Node.js应用程序环境?

我们已成功使用iisnode运行我们的Node.js应用程序,但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>

2 个答案:

答案 0 :(得分:15)

Joachim就在上面,将<iisnode node_env="production" />添加到web.config可以控制NODE_ENV值。另一种方法是在web.config旁边添加iisnode.yml文件,并在其中将NODE_ENV值spcify为node_env: production。请参阅https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/iisnode.yml

中iisnode.yml中可以使用的其他设置

答案 1 :(得分:0)

为清楚起见,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>