【问题标题】:React native Android SyntaxError: Attempted to redefine property 'key'React native Android SyntaxError: Attempted to redefine property 'key'
【发布时间】:2016-04-06 09:07:41
【问题描述】:

在运行 react-native run-android 后,我在模拟器(测试 Genymotion 和 google Stock Emulator)和物理设备(Samsung S4)上收到以下错误:

输入的错误: java.util.concurrent.ExcecutionException: java.lang.RuntimeException: SyntaxError: Attempted to redefine property 'key'. (http://192.168.50.37:8081/index.android.bundle?platform=android&dev=true&hot=false:72450)

  • this stackoverflow discussion 中,Genymotion 发生了类似的错误(也是 java.util.concurrent.ExecutionException),但那里的解决方案对我没有帮助,即 adb reverse tcp:8081 tcp:8081
  • 我还尝试将 Dev Settings/Debug server host & port for device 更改为 0.0.0.0:8081 而不是 MY_IP:8081,其中 MY_IP 是我电脑的 IP。

我正在运行 react native 0.22.2

【问题讨论】:

    标签: java android adb react-native genymotion


    【解决方案1】:

    问题是:key 在某处的视图中被定义了两次,例如

    <View key={index} key={other} ... />
    

    所以只需删除key 属性之一。

    寻找解决方案的中间步骤:

    一开始,在 React Native 菜单中按下Start Chrome Debugging 时,应用程序会再次运行,但错误会显示在相应浏览器选项卡的控制台中。 然后它显示了更好的错误消息。

    奇怪的是,这个错误在 iOS 上不会发生。

    【讨论】:

    • 你是用什么方法找到重复键的?我想我在第 3 方库中有一个重复的密钥,但我不知道如何识别哪一个。搜索一百个 node_modules 并不好玩。有什么想法吗?
    • 不完全确定了,我想我只是浏览了在错误之前使用过的组件并搜索了key。但是,在这种情况下,在&lt; /&gt; 中至少两次查找key 的正则表达式可能会有所帮助?!虽然你的错误当然也可能有其他原因..
    • 肯定有某种 lint 实用程序可以捕获这样的东西吗?我猜 Android 有点像 react-native lint。除非它没有确定问题的位置。这次我在 JSX 组件定义中找到了重新定义的属性。我在样式表样式定义中也有它们。我想念真正的编译器。
    • 你可以在node_modules目录ack '^.*(key\s*=){1}.*(key\s*=){1}.*$'中使用这个正则表达式和ack
    • 如果您有重复的样式键值对,也可能会发生这种情况。
    【解决方案2】:

    我遇到了同样的错误,但使用了不同的关键字

    在我的例子中,关键字在我的 css styles 属性中声明了两次。

    let styles = StyleSheet.create({
        keyword:{}, 
        keyword:{}
    });
    

    在 iOS 上没有崩溃或警告,但在 Android 上会导致崩溃。

    【讨论】:

      【解决方案3】:

      在 v0.49 上遇到了同样的错误。折腾了好久,终于发现我的css声明有重复:

      logo: {
          flex:.3,
          height: 120, 
          marginBottom: 10,
      },
      
      logo: {
          ...styText,
          marginTop: 10
      },
      

      刚刚删除了第二个声明修复了错误。

      【讨论】:

        猜你喜欢
        • 2019-09-06
        • 2021-04-05
        • 1970-01-01
        • 2020-08-15
        • 2017-12-09
        • 1970-01-01
        • 2020-01-06
        • 1970-01-01
        • 2017-04-24
        相关资源
        最近更新 更多