ubuntu 系統在環境變數 NODE_ENV 預設的部份沒有指定,當執行 NPM 指令時會是 undefined 產生錯誤,針對此問題整理出處理方式。

使用指令 echo $NODE_ENV 查驗,目前系統下的環境變數是否可正當印出。

node express 框架文件,在 環境 / 設定中的作法 段落談到,將 NODE_ENV 設為 production,Upstart 與 systemd 的指令使用方式。


環境變數的啟動設定檔路徑,針對全部或單一使用者帳號設定

/etc/profile
系統中所有使用者帳號登入時的啟動設定檔。

/etc/environment
第二順位啟動設定檔。

~/.profile
指針對目前的使用者帳號有效。

~/.bashrc
繼承於 ~/.profile 執行之下,也是針對目前的使用者帳號有效。

ubuntu 環境變數基於帳號使用者權限或是獨立的使用者在系統啟動時所針對的環境設定,可參考 ubuntu-设置系统环境变量 一文。


只做為正式上線主機 production (生產模式) 專用處理方式

主機如果只做為正式上線的主機,可以直接在環境變數直接在啟動檔中進行永久設定,當主機重新載入系統時也會直接載入環境變數。

env 指令,印出環境變數

查看系統下的環境變數,使用指令 env 就會列出系統下所有的環境變數,列表下沒有 NODE_ENV 環境變數。

export 指令,針對 env 環境直接廷伸執行指令

使用 export 可以直接在 env 環境變數中,以暫時性的方式加入設定在環境變數之中,但如果要永久寫入系統之中就需要加到上面的系統設定檔之中,加入永久的環境變數需重啟主機。

使用 ~/.profile 方式設定永久環境變數,可參考 How to Set Permanent Environment Variable in Ubuntu 影片

unset 指令,針對目前 env 環境變數操作刪除變數

如果 NODE_ENV 已存在環境變數,透過指令 unset NODE_ENV 先進行目前的環境移除。


使用 set 或是 export 指令,指定 NODE_ENV 環境變數為 production (生產模式)

資料來源:
set NODE_ENV on DigitalOcean Ubuntu server
Linux设置node的process.env.NODE_ENV