通过Visual Studio部署到Azure云服务时未设置环境变量

时间:2016-01-27 15:21:24

标签: node.js visual-studio azure deployment azure-cloud-services

Azure云服务中的环境变量存在一些问题。 我正在尝试通过 ServiceDefentition.csdef 文件在部署期间设置“NODE_ENV”环境变量。

变量将由我的node.js应用程序通过process.env.NODE_ENV读入。

这方面的文档不是很广泛(因为这似乎是一件非常简单的事情),但这就是我一直关注的内容:link1 link2

我所拥有的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变量而不是在运行时,使用xpath配置设置,但它们似乎并没有为我创建env变量。

当搞乱xpaths方法时,我确实发现我的配置设置是在实例上创建的,因此正在读取定义文件。

我是否缺少任何常见的(或不常见的)陷阱或隐藏的细节,因为对于一些显然非常简单的事情,我遇到了很多麻烦。

2 个答案:

答案 0 :(得分:1)

您可以在web.config或iisnode.yml中进行编辑。看看这个答案

Set Node.js Environment Variable (NODE_ENV) in iisnode to Production/Development/Test

答案 1 :(得分:0)

node_envweb.config中设置iisnode.yml变量是正确的,如@AIDAN CASEY所说。

此外,我们可以利用纯Node.js第三部分模块dotenv。只需要创建一个名为.env的文件,内容为:

node_env=production

在Nodejs脚本中包含并初始化模块:

require('dotenv').load();