1

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方法時,我發現我的配置設置正在實例上創建,因此正在讀取定義文件。

是否有任何常見的(或不常見的)遺漏或隱藏的細節,我錯過了,因爲對於顯然非常簡單的事情我有很多麻煩。

回答

0

這是正確的設置node_env變量web.configiisnode.yml作爲@AIDAN凱西說。

此外,我們可以利用純Node.js第三方零件模塊dotenv。只需要創建一個名爲.env文件與內容:

node_env=production 

包括和初始化的NodeJS腳本模塊:

require('dotenv').load(); 
+0

對不起,跟進的問題,但它是可以使用的XPath(或類似)在創建環境變量時使用WebConfig時拉入配置設置;類似於如何在ServiceDefinition中實現?如果是這樣,當配置發生更改時,此方法是否會動態更改環境變量? – Mitch

+0

如果您的意思是要在'.cscfg'和'.csdef'文件中配置自定義設置,並且將在node.js運行時中設置,那麼您可以在Nodejs腳本中獲取設置。我認爲你可以在azure sdk中爲節點利用[azure.RoleEnvironment](https://github.com/Azure/azure-sdk-for-node/blob/master/examples/service-runtime.md)。但它只在工作角色中可用。 –

相關問題