Azure雲服務中的環境變量存在一些問題。 我試圖在部署期間通過ServiceDefentition.csdef文件設置「NODE_ENV」環境變量。通過Visual Studio部署到Azure Cloud Service時未設置環境變量
該變量將由我的node.js應用程序通過process.env.NODE_ENV讀入。
這個文檔不是很廣泛(因爲它似乎是一個非常簡單的事情),但是這是我一直在關注:link1link2
服務定義文件我的部分是以下內容:
<?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方法時,我發現我的配置設置正在實例上創建,因此正在讀取定義文件。
是否有任何常見的(或不常見的)遺漏或隱藏的細節,我錯過了,因爲對於顯然非常簡單的事情我有很多麻煩。
對不起,跟進的問題,但它是可以使用的XPath(或類似)在創建環境變量時使用WebConfig時拉入配置設置;類似於如何在ServiceDefinition中實現?如果是這樣,當配置發生更改時,此方法是否會動態更改環境變量? – Mitch
如果您的意思是要在'.cscfg'和'.csdef'文件中配置自定義設置,並且將在node.js運行時中設置,那麼您可以在Nodejs腳本中獲取設置。我認爲你可以在azure sdk中爲節點利用[azure.RoleEnvironment](https://github.com/Azure/azure-sdk-for-node/blob/master/examples/service-runtime.md)。但它只在工作角色中可用。 –