我正在尝试使用 dotenv-webpack
插件。这在本地效果很好。但是当我部署到 Heroku 时失败了。
我已经根据这个 git issue 遵循了建议,但仍然有问题。
我的 webpack 配置如下所示:
const path = require('path');
const Dotenv = require('dotenv-webpack');
module.exports = {
context: path.join(__dirname, '/src'),
entry: {
javascript: './js/index'
},
output: {
filename: 'bundle.js',
path: path.join(__dirname, '/dist'),
},
resolve: {
alias: {
react: path.join(__dirname, 'node_modules', 'react')
},
extensions: ['.js', '.jsx'],
},
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
loaders: ['babel-loader'],
},
{
test: /\.html$/,
loader: 'file?name=[name].[ext]',
},
],
},
plugins: [
new Dotenv({
path: path.resolve(__dirname,'.env')
}),
]
};
我期望
dotenv
插件的编写方式如上,它将在构建时解析我的 .env
文件(位于项目的根目录,以及 webpack.config),从而使我的项目能够访问 env vars。相反,环境变量是 undefined
,在 Heroku 中。我在 Heroku 中设置了一个 env var。 Key 设置为类似 SECRET_KEY
的内容。值设置为类似 123456
的值。谁能给我一些见解?
最佳答案
我不使用 Heroku,也没有尝试过。但我知道如果你在 Heroku 仪表板上定义了变量,那么这些变量就是系统变量,所以你需要使用选项 systemvars: true
“dotenv-webpack”。
作为声明(我再说一遍,我从未使用过 Heroku):
所有这一切都取决于 Heroku 部署的工作方式,如果您在 Heroku 内部构建应用程序(您在 Heroku 内部调用 Webpack)那么它可以工作,但是如果您将构建的应用程序发送到 Heroku(您不在 Heroku 内部调用 Webpack)那么它不起作用。
关于reactjs - 生产中的 Dotenv-webpack?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54261938/