我正在嘗試關注NodeJs上的教程。我不認爲我錯過了任何東西,但每當我打電話給process.env.NODE_ENV
時,我得到的唯一價值是未定義的。根據我的研究,默認值應該是「發展」。這個值是如何動態設置的?它最初是在哪裏設置的?process.env.NODE_ENV未定義
回答
process.env是對你的環境的引用,所以你必須在那裏設置變量。
要設置environment variable in Windows:
SET NODE_ENV=development
在OS X或Linux:
export NODE_ENV=development
也可以設置它通過代碼,例如:
process.env.NODE_ENV = 'test';
我強烈建議任何人不要更改應用程序邏輯中的環境標識符。你永遠不希望應用程序突然想到這是別的東西,而不是真的。這應該只能在系統級別上進行更改,正如許多其他答案所表明的那樣。 – Kafoso
您可能需要閱讀12個因子應用程序:https://12factor.net/config。此代碼將違反此規定。有充分的理由讓你的配置與你的代碼分開。 – jcollum
有趣的12個因子的應用程序!保持! – joaquindev
在UBUNTU使用:
$出口NODE_ENV =測試
像一個魅力工作,謝謝! –
對於使用* nix中(Linux和OS X等),沒有理由通過第二export命令去做的人,你可以鏈接它作爲調用命令的一部分:
NODE_ENV=development node server.js
更容易,不是嗎? :)
很好知道。 – basheps
像cross-env這樣的軟件包也可以讓它在windows上工作。 – walkerrandophsmith
在Windows上使用節點時,我們遇到了此問題。
與其要求任何試圖運行應用程序的人設置這些變量,我們在應用程序中提供了回退。
var environment = process.env.NODE_ENV || 'development';
在生產環境中,我們會按照常規方法(SET/export)定義它。
提示
在package.json
:
"scripts": {
"start": "set NODE_ENV=dev && node app.js"
}
在app.js
:
console.log(process.env.NODE_ENV) // dev
console.log(process.env.NODE_ENV === 'dev') // false
console.log(process.env.NODE_ENV.length) // 4 (including a space at the end)
所以,這可以更好地:
"start": "set NODE_ENV=dev&& node app.js"
或
console.log(process.env.NODE_ENV.trim() === 'dev') // true
- 1. 當在process.env.NODE_ENV =='production'時,在IE11.0.9600中使用babel-polyfill取回和標題未定義。
- 2. Webpack.config.js process.env.NODE_ENV not workinkg。 - ReactJS -
- 3. webpack合併definePlugin process.env.NODE_ENV undefined
- 4. Envify CLI不會刪除process.env.NODE_ENV
- 5. 獲取未定義未定義
- 6. Javascript:false ||未定義vs未定義||假
- 7. Dojo,dgrid定義未定義
- 8. Ember JS:定義未定義
- 9. 未定義的PHP定義?
- 10. 定義未定義(ESLint)
- 11. GPS:未定義
- 12. Firebase未定義
- 13. Magento:productGridJsObject未定義
- 14. process.env.PORT未定義
- 15. ReferenceError:SpreadsheetApp未定義
- 16. Timedelta未定義
- 17. ReferenceError:CSV未定義
- 18. document.reg_page未定義
- 19. NameError:name'self'未定義?
- 20. jQuery.noty未定義
- 21. ReferenceError:useItems未定義
- 22. Console.log未定義
- 23. 未定義?
- 24. `window.XMLHttpRequest`未定義
- 25. 未定義SQLiteConnection
- 26. 'indexOf'未定義?
- 27. NameError:name'Area'未定義
- 28. SP未定義
- 29. 未定義CLSID_PropertyChangeArray
- 30. Firebase未定義
設置NODE_ENV爲Heroku的應用程序,你可以使用:'Heroku的配置:設置NODE_ENV =「生產」' –
雖然答案下面將通過設置環境變量,這裏的大課暫時解決問題應該是你永遠無法知道是否會設置任何環境變量......所以,請相應地編寫代碼並測試它是否已設置,如果是,請執行以下操作。不要對此做出假設。 –