React Native - `require()`语句异常处理
React Native - `require()` statement exception handling
TL;DR:我希望能够在react-native
中require
一个模块,并在模块不存在的情况下自行处理异常(而不是显示RedBox
)。
当给定请求的语言环境时,我使用moment.js
的逻辑从其预设库(https://github.com/moment/moment/tree/develop/locale)中选择最合适的语言环境。
例如,如果要求en-us
,但没有找到,它将返回到en
,以此类推。此逻辑(chooseLocale
, loadLocale
)的代码可以在这里找到:https://github.com/moment/moment/blob/develop/src/lib/locale/locales.js
基本上,它尝试require
给定的预设。如果不存在,则从require
语句获得一个异常,捕获它并继续执行下一个选项。
现在,我的问题是试图使用这个逻辑与react-native
。require
语句实际上是由react-native
的guardedLoadModule
实现的,CC_14处理异常(显示红色屏幕)。在我看来,moment
的逻辑没有受到这个逻辑的伤害,因此我希望RedBox
不显示。
任何想法吗?
现在这是可能的(链接到讨论):
可选依赖项在metro 0.59中发布
用try
:
let module;
try {
module = require('module');
} catch {
...
}
React-native的require
与node.js的require
的不同之处在于,在应用程序运行之前,应用程序被捆绑和打包。因此,不可能执行动态require
语句。参见此github issue。
检查react-native上的以下github问题,因为它包含对您的问题的"解决方案"。https://github.com/facebook/react-native/issues/1629
换句话说:您必须自己实现回退机制,并显式地告诉moment使用哪个区域设置。
switch deviceLocale:
case 'es':
require('moment/locale/es');
break;
case 'he':
require('moment/locale/he');
break;
- node.js和express中的异常处理
- JavaScript 异常处理未按预期工作
- tomcat服务器停止时UI上的异常处理
- 带异常处理的基数转换
- Javascript getJson异常处理
- 使用生成器进行异常处理
- 如何在保留 JavaScript 调试器功能的同时进行优雅的异常处理
- 了解 JavaScript 中的异常处理:当更改 try/catch 块的位置时,获得不同的输出
- 流星中的异常处理
- 角.如何在视图中显示异常处理程序的错误
- 这个 if 语句如何处理逗号
- 如何使工作 Chrome 扩展程序的未捕获异常处理程序(由于 CORS 保护而不起作用)
- Selenium2/WebdriverJavaScript异常处理:错误消息大部分时间为空(Javaneneneba A
- 使用bluebird promise进行异步异常处理
- Vert-x 3.3.2 HTTP客户端异常处理程序
- Node.js最佳实践异常处理-异步/Await之后
- 异常处理程序不捕获异常
- NodeJS中的嵌套回调和异常处理
- React Native - `require()`语句异常处理
- 如何创建if语句来处理html中的空字符串