process.env.NODE_ENV === "开发" 即使在生产中
Posted
技术标签:
【中文标题】process.env.NODE_ENV === "开发" 即使在生产中【英文标题】:process.env.NODE_ENV === "developement" even in production 【发布时间】:2020-04-19 10:06:26 【问题描述】:我想部署一个 React 应用(使用 Create React App 制作)+ 一个带有 Heroku 的 Node 服务器,
我做到了,但我的应用无法从服务器获取数据,
在生产中,我的 process.env.NODE_ENV 等于“开发”,这会导致我的代码中有很多错误的东西,
您知道什么可以让 process.env.NODE_ENV 始终处于“开发”状态吗?在构建时,这个环境变量应该切换到“生产”,不是吗?
【问题讨论】:
你能分享你的package.json
文件吗?
嗨,你可以在这里观看:github.com/Versifiction/ofilms/blob/master/package.json
这能回答你的问题吗? How to set NODE_ENV to production/development in OS X
【参考方案1】:
您可以使用env-cmd 控制您的环境。它们让您在本地开发、测试、暂存、UAT 或生产之间轻松切换。
您可以参考这个article。这对我很有帮助
【讨论】:
感谢您的资源,我阅读了这篇文章,但如果我没记错的话,我仍然不明白为什么我的 process.env.NODE_ENV 在生产中处于“开发”状态:'( @Versifiction 你试过npm run build
或创建优化生产包的命令?
是的,每次部署时脚本都会完成,但 env 变量仍在开发中,但别担心,我是用另一个解决方案完成的【参考方案2】:
您的环境变量可以按环境设置,在本例中在 Heroku 中:https://devcenter.heroku.com/articles/config-vars#using-the-heroku-dashboard
如果您想确保build
始终以相同的NODE_ENV
运行,您可以按照@seunggabi 的回答。在这种情况下,我还会使用cross-env
使其跨平台工作。可以在heroku-postbuild
任务上强制执行每个进程变量(在&&
之后)。
【讨论】:
嗨,我的包 json 中也有脚本 heroku postbuild(“heroku-postbuild”:“npm install && npm run build”),但看起来构建没有完成,因为我的 node_env变量仍在开发中... 我的建议是尝试将heroku-postbuild
用作npm install && cross-env NODE_ENV=production npm run build
(在将cross-env
添加到开发依赖项之后)【参考方案3】:
你的package.json
添加这个。
"scripts":
"start": "export NODE_ENV=development; your start code",
【讨论】:
以上是关于process.env.NODE_ENV === "开发" 即使在生产中的主要内容,如果未能解决你的问题,请参考以下文章
if(process.env.NODE_ENV === 'production') 总是假的
Jest + process.env.NODE_ENV 没有正确测试