【发布时间】:2018-10-23 11:09:20
【问题描述】:
到目前为止,我一直在构建像 webpack -p 这样的 webpack 包并部署到 Heroku。一切都很好。我想有更多的控制权,所以我没有使用-p,而是在我的 webpack 配置中使用了 UglifyJsPlugin 和 DefinePlugin,因为这正是 -p 正在做的事情。
这就是问题开始的地方。
如果我在没有 DefinePlugin 的情况下使用 -p,这就是我的构建文件最后的样子。
var PORT = process.env.NGINX_PORT ? '/tmp/nginx.socket' : process.env.PORT;
process.env.PORT 被保留,并且部署到 Heroku 正在运行。
如果我使用 DefinePlugin
var PORT = Object({"NODE_ENV":"production"}).NGINX_PORT ? '/tmp/nginx.socket' : Object({"NODE_ENV":"production"}).PORT;
我的 process.env.PORT 不再存在,部署到 Heroku 失败。
如何使用 DefinePlugin 但仍保持 process.env.PORT 不变?
这是我的 webpack 配置
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify(process.env.NODE_ENV),
},
}),
还有我的启动脚本
"start": "cross-env NODE_ENV=production node ./src/build/bundle.js"
【问题讨论】:
-
没有。定义插件会将您放在那里的所有内容转换为 Object({"NODE_ENV":"production"})
标签: reactjs heroku webpack environment-variables production-environment