【发布时间】: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?请指定,因为它也可能是问题来源的第三方库。因此,问题不在于反应脚本