没有堆栈',原因:'未处理的 JS 异常:无效的正则表达式:无效的组说明符名称

Posted

技术标签:

【中文标题】没有堆栈\',原因:\'未处理的 JS 异常:无效的正则表达式:无效的组说明符名称【英文标题】:no stack', reason: 'Unhandled JS Exception: Invalid regular expression: invalid group specifier name没有堆栈',原因:'未处理的 JS 异常:无效的正则表达式:无效的组说明符名称 【发布时间】:2019-07-11 13:49:55 【问题描述】:

我的应用无法启动,它会出现异常中断:

Invalid regular expression: invalid group specifier name

no stack
run
    NativeRunnable.java
handleCallback
    Handler.java:873
dispatchMessage
    Handler.java:99
dispatchMessage
    MessageQueueThreadHandler.java:29
loop
    Looper.java:209
run
    MessageQueueThreadImpl.java:232
run
    Thread.java:914

我发现在iosandroid中,如果我启用了live javascript debug,那么问题就不会出现,但是为什么呢?

我在 xcode 和 android 上遇到的同样的错误:

no stack', reason: 'Unhandled JS Exception: Invalid regular expression: invalid group specifier name

我不知道在哪里挖?或者在哪里调试? 有谁可以帮忙?

【问题讨论】:

您是否尝试过仔细查看代码中的正则表达式?也许其中一个包含unsupported lookbehind? 你是对的,我已经找到了,虽然我认为一旦我进入使用正则表达式的屏幕就会出现这样的错误......而不是在应用程序启动时 JavaScript 中的正则表达式在代码执行之前被编译。不知道为什么开发和生产之间存在差异,这可能与编译成平台特定代码的内容有关。 【参考方案1】:

也遇到了这个问题,将一个电子项目移植到 RN。将其追踪到一个后向正则表达式,Chrome 支持该正则表达式,但 Safari 不支持(并且显然是本机反应)——请参阅Works in Chrome, but breaks in Safari: Invalid regular expression: invalid group specifier name /(?<=\/)([^#]+)(?=#*)/

在我的项目中搜索 (? 导致我找到了罪魁祸首!

【讨论】:

【参考方案2】:

您没有收到包含此错误的堆栈的原因是 JavaScript 中的正则表达式文字是在脚本执行之前编译的。

正则表达式文字在脚本加载时提供正则表达式的编译。

——MDN - Regular Expressions

不幸的是,这意味着有问题的正则表达式可能在代码中的任何位置,因为所有 ES2015 模块都捆绑在 react-native 应用程序中。

【讨论】:

以上是关于没有堆栈',原因:'未处理的 JS 异常:无效的正则表达式:无效的组说明符名称的主要内容,如果未能解决你的问题,请参考以下文章

没有为请求类型“GET”找到 HTTP 处理程序

来自未处理异常的 C++ 堆栈跟踪?

在展开操作期间遇到无效或未对齐的堆栈

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“initWithAPIKey 异常:无效的 API 密钥格式”

无效的操作异常未处理 - 不能一次更新 2 件事

引发类型为“System.OutOfMemoryException”的异常