dotenv-webpack不能在生产环境中加载环境变量



我要做的是将环境变量设置为CRA,但使用webpack。我创建了两个像CRA一样的env文件。.env.development.env.production。这两个文件在CRA工作。我在webpack配置文件中使用dotenv-webpack来设置process.env变量,如下面的代码。它可以在本地主机上运行,但不能在生产中运行。

const Dotenv = require("dotenv-webpack")
const isProduction = process.env.NODE_ENV === "production"
//webpack config
modules.exports = {
...
plugins: [
new Dotenv({
path: `./.env.${isProduction ? "production" : "development"}`,
}),
...
]
...
}

package.json上,我使用:

"scripts": {
"build": "cross-env NODE_ENV=production webpack",
"start": "cross-env NODE_ENV=development webpack serve"
}

所以我可以在webpack上得到正确的isProduction变量。

谁能帮我修一下?

首先,你的.env文件永远不应该推送到你的git repo上。所以指定路径是没有用的。您应该直接在docker配置中输入这些变量,或者在netflix/Heroku的环境变量区域中输入这些变量。然后让你的dotenv插件在生产中工作,只需添加:

new Dotenv({ systemvars: true }),