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 === "开发" 即使在生产中的主要内容,如果未能解决你的问题,请参考以下文章

process.env.NODE_ENV的理解

if(process.env.NODE_ENV === 'production') 总是假的

Jest + process.env.NODE_ENV 没有正确测试

理解webpack之process.env.NODE_ENV详解(十八)

process.env.NODE_ENV

webpack process.env.NODE_ENV 未定义