【问题标题】: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

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

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

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

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

【问题讨论】:

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

标签: react-native


【解决方案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 应用程序中。

    【讨论】:

      猜你喜欢
      • 2020-09-17
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      • 2021-04-04
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      相关资源
      最近更新 更多