2017-05-24 142 views
0

我注意到這種奇怪的行爲,這並不是什麼大不了的事情,但是竊聽了我。節點在Windows上的環境變量

在我的package.json文件的「scripts」部分下,我有一個「start」條目。它看起來像這樣:

"scripts": { 
    "start": "APPLICATION_ENV=development nodemon app.js" 
} 

在Mac終端上鍵入npm start工作正常,並nodemon運行具有正確的APPLICATION_ENV變量應用程序如預期。當我在Windows環境下嘗試相同時,出現以下錯誤:

「'APPLICATION_ENV'未被識別爲內部或外部命令,可操作程序或批處理文件。

我已經嘗試了git-bash shell和正常的Win CMD提示符,同樣的處理。

我覺得這很奇怪,因爲直接輸入命令到終端(不通過npm啓動package.json腳本)工作正常。

有沒有其他人看過這個,找到了解決辦法?謝謝!!

回答

1

要在腳本中跨平臺使用環境變量,請安裝並使用cross-env

"scripts": { 
    "start": "cross-env APPLICATION_ENV=development nodemon app.js" 
} 

這個問題在提供給cross-env的鏈接中有很好的解釋。它讀取:

Most Windows command prompts will choke when you set environment variables with NODE_ENV=production like that. (The exception is Bash on Windows, which uses native Bash.) Similarly, there's a difference in how windows and POSIX commands utilize environment variables. With POSIX, you use: $ENV_VAR and on windows you use %ENV_VAR% .

0

我結束了使用基於第二個答案在這裏dotenv包:

Node.js: Setting Environment Variables

我喜歡這個,因爲它可以讓我設置環境變量,而無需注入額外的文本進入我的npm腳本行。相反,他們正在使用.env文件(應放置在每個環境中並從版本控制中省略)。