2017-08-28 92 views
3

運行Node應用程序時,Node如何知道它在哪個環境中運行?節點如何設置其環境變量?

我知道環境是在process.env.NODE_ENV範圍內定義的,但是如何以及在哪裏定義了該變量?

+0

它可以在用戶配置文件中定義,也可以啓動節點 – Garfield

+0

這取決於變量是如何環境中定義和分配之前設置。如果它存儲在'.bashrc'文件中,那麼它一直存在,如果在啓動一個節點程序之前它被設置,它將一直保留在內存中,除非機器被重新啓動。 – Rayon

回答

1

有設置節點變量的多種方式,但最常見的

1是開始與他們的控制檯中啓用如下:

> NODE_ENV=prod node start.js 
process.env.NODE_ENV // prod 

但有些時候,你可以明確地設置時間

process.env.NODE_ENV = 'test'; 
require('config') // then it will return me the test.json config 

// I use this technique mostly for unit tests 

:文件開始前env中

2.出口在package.json

"scripts": { 
    "start": "export NODE_ENV=dev && node server.js", // for linux 
    "start": "set NODE_ENV=dev && node server", // for windows 
    "test": "mocha" 
    }, 

的envars當您運行npm start腳本將在dev模式


3.使用NPM包作爲dotenv和設置運行服務器a .env文件

env管理插件作爲dotenv最常用的一個。在這裏您可以創建所需的ENV變量.env文件

DB_HOST=localhost 
DB_USER=root 
DB_PASS=s1mpl3 
+0

當代碼在像Heroku這樣的環境中運行時,Heroku服務器是否明確地將環境變量設置爲「production」? – charliesneath

+0

在您的dyno'設置>配置變量'中,它位於'應用程序名稱'之後,您可以展開此選項卡,然後添加和編輯您需要的所有'env'變量。 所有變量都可以通過'process.env'訪問 –

0

這些通常在package.json命令設置或來自.env文件。

例如,NODE_ENV=development來自.env文件可以在process.env.NODE_ENV訪問。

用於加載.env文件到process.env檢出dotenv

0

該變量未定義,除非您定義它。
我想你正在使用一個普通的Windows機器。
在Windows上,您可以簡單地執行此操作。 創建一個隨機索引文件,並把這個在它:console.log(process.env.NODE_ENV) ,然後用運行:set NODE_ENV=productionEnvironment && node index