[英]Why can't I log `process.env` in my bundled code with Webpack?
我正在使用Dotenv
和DefinePlugin()
將這些環境變量添加到我的包中。
webpack.config.js
new Dotenv(),
new webpack.DefinePlugin({
"process.env.TEST_ENV": JSON.stringify("xxx")
}),
Dotenv
加載一個帶有一堆環境變量的.env
文件。 一切正常。
默認情況下, NODE_ENV
根據您在 webpack.config.js 中設置的mode
注入webpack.config.js
。
這工作正常,我可以從我編譯和捆綁的代碼中讀取NODE_ENV
和TEST_ENV
。
index.js
const { NODE_ENV, TEST_ENV } = process.env;
console.log(`process.env: ${JSON.stringify(process.env)}`);
console.log(`NODE_ENV: ${JSON.stringify(NODE_ENV)}`);
console.log(`TEST_ENV: ${JSON.stringify(TEST_ENV)}`);
如上圖所示,我可以從process.env
object 成功訪問並記錄變量NODE_ENV
和TEST_ENV
。
但是當我嘗試記錄process.env
本身時,它會記錄一個空的 object {}
,您也可以從圖片中看到。
這是為什么? 為什么我不能像使用它的屬性NODE_ENV
和TEST_ENV
那樣記錄process.env
?
來自: https://webpack.js.org/plugins/define-plugin/
鑒於DefinePlugin
直接替換您的代碼,當您執行此操作時:
webpack.config.js
new webpack.DefinePlugin({
"process.env.SOME_VARIABLE": JSON.stringify("SOME_VALUE")
});
你在你的代碼中這樣稱呼它:
index.js
const SOME_VARIABLE = process.env.SOME_VARIABLE;
Webpack 將其轉譯為:
const SOME_VARIABLE = "SOME_VALUE"
它完全替換了字符串"SOME_VALUE"
的process.env.SOME_VARIABLE
。 這也是您需要調用JSON.stringify("SOME_VALUE")
的原因。 因為否則你會得到const SOME_VARIABLE = SOME_VALUE
,沒有字符串引號,你會得到SOME_VALUE is not defined
錯誤。
這就是您不能在捆綁代碼中記錄或解構process.env
的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.