【问题标题】:How to know an app started with react-scripts start is started in development mode or production mode如何知道以 react-scripts start 启动的应用程序是在开发模式或生产模式下启动的
【发布时间】:2019-08-29 07:53:06
【问题描述】:

在两个实例上使用 react-script start 启动我的 react 应用程序时会出现一些特殊情况。

对于一个实例,我看到error boundary overlay screen,而对于另一个实例,每当发生任何运行时异常时,我都看不到错误边界屏幕,尽管两个实例具有相同的代码库并以react-scripts start 开头。我用react-scripts start 启动这两个实例,因为我希望它们都运行开发模式。

我设置 NODE_ENV=development 并在 app.js 中验证 process.env.NODE_ENV 开始设置为 development。运行时异常时,我仍然没有看到其中一个实例的错误覆盖屏幕。此错误清楚地记录在控制台中。但是对于一个实例,我得到了错误覆盖屏幕,而另一个实例却没有。

根据下面的Tyro 在他的回答中,检查NODE_ENV 似乎可以判断应用程序是在生产模式还是开发模式下运行。但是,在我的情况下,虽然NODE_ENV 被检查为设置为development,但行为类似于production 模式,因为运行时异常不会出现错误覆盖,但会记录到控制台。

问题:

1) 检查 NODE_ENV 可以了解变量值,但我们如何知道应用程序是否真的在 NODE_ENV 指定的环境中运行?

2) 在我的情况下,即使检查的 NODE_ENV 的值是“开发”,应用程序的行为也与生产模式一样,因为尽管错误被记录到控制台,但错误边界覆盖屏幕并未出现。即使在development 模式下也不会出现错误边界覆盖屏幕,是否还有其他情况?

【问题讨论】:

  • 找到一种方法来检查 process.env.NODE_ENV,可能会将其暴露给全局 window。参考:stackoverflow.com/questions/42458434/…
  • 但是我设置了 NODE_ENV=developement 并验证了使用 echo $NODE_ENV,应用程序在错误边界的生产模式下仍然表现得像,即覆盖错误屏幕没有显示。
  • 你是怎么设置的?也许你做错了。如何使用echo $NODE_ENV 检查该变量?不是在您的应用程序(html/浏览器)中进行检查吗?
  • 我在 docker 容器中运行应用程序。我通过NODE_ENV npm start 以及在环境中设置 NODE_ENV=development 并通过echo $NODE_ENV. 验证启动了应用程序即使我可以在 中看到相同的运行时异常错误,仍然没有显示错误边界覆盖控制台日志。同样的错误出现在另一个实例上的错误覆盖屏幕上。请注意对我的问题的修改。
  • 为了更好地帮助您,请提供代码或更多信息,以便我们轻松复制问题。还有,你指的是哪种error overlay?请指定,因为它也可能是问题来源的第三方库。因此,问题不在于反应脚本

标签: reactjs create-react-app


【解决方案1】:

我不确定您是否可以通过这种方式检查您的 CRA 应用程序使用的 NODE_ENV 变量。您无法通过发出 echo $NODE_ENV 在您的机器(docker)中检查它。

  1. 设置 = 更新您的 react-scripts start 命令(如果您使用该命令来运行您的应用):

"scripts": { "start": "NODE_ENV=development react-scripts start", ...

  1. 要在 App.js 条目文件中检查 =,只需添加 console.log('env is:', process.env.NODE_ENV),启动应用程序,在浏览器中打开并显示 console,您应该会看到日志输出。

    window.MyEnv = process.env.NODE_ENV,打开同一个控制台调试器并检查window.MyEnv的值。

希望这会有所帮助!

【讨论】:

  • 感谢您的回复,但不幸的是,这并没有帮助。我不知道当您这样做时会产生什么不同 - NODE_ENV=development npm start 与将其放在 package.json 中的 npm start 的定义中。虽然我试过但没有帮助。我把这个window.MyEnv = process.env.NODE_ENV 放在我的 index.js 中,当我在浏览器控制台中看到时,我看到它被设置为“开发”。还是同样的运行时错误,没有错误覆盖画面!
  • 所以我认为您可能需要更新帖子或标题,因为您似乎不是在寻找How to know an app started with react-scripts start is started in development mode or production mode
  • NODE_ENV 设置环境变量,但这并不意味着应用程序真的在开发或生产模式下运行。我想知道如何确定应用程序是处于开发模式还是产品模式。
  • 我更新了问题。如果您对此有答案,请提供。否则,请删除您的答案,以便其他人知道此问题仍未得到解答。
猜你喜欢
  • 2019-02-11
  • 2023-03-22
  • 2020-01-24
  • 1970-01-01
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多