Java React native Android SyntaxError:试图重新定义属性';键';

Java React native Android SyntaxError:试图重新定义属性';键';,java,android,adb,react-native,genymotion,Java,Android,Adb,React Native,Genymotion,在运行react native run android后,我在模拟器(测试过Genymotion和google Stock Emulator)和物理设备(三星S4)上发现以下错误: 键入的错误为: java.util.concurrent.ExceptionException:java.lang.RuntimeException:SyntaxError:试图重新定义属性“key”。(http://192.168.50.37:8081/index.android.bundle?platform

在运行
react native run android
后,我在模拟器(测试过Genymotion和google Stock Emulator)和物理设备(三星S4)上发现以下错误:

键入的错误为:

java.util.concurrent.ExceptionException:java.lang.RuntimeException:SyntaxError:试图重新定义属性“key”。(http://192.168.50.37:8081/index.android.bundle?platform=android&dev=true&hot=false:72450)

  • Genymotion也发生了类似的错误(也是
    java.util.concurrent.ExecutionException
    ),但解决方案对我没有帮助,即
    adb反向tcp:8081 tcp:8081
  • 我还尝试将设备的开发设置/
    调试服务器主机和端口
    更改为
    0.0.0:8081
    ,而不是
    MY_IP:8081
    ,其中
    MY_IP
    是我电脑的IP

我正在运行react native 0.22.2,问题是:
键在某个视图中定义了两次,例如

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

因此,只需删除一个
属性即可

let styles = StyleSheet.create({
    keyword:{}, 
    keyword:{}
});
找到解决方案的中间步骤:

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


奇怪的是,这个错误没有出现在iOS上。

我也有同样的错误,但使用了不同的关键字

在我的例子中,关键字在我的css样式中声明了两次

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

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

在v0.49上遇到相同的错误。花了很多时间,终于发现我的css声明中有重复项:

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

logo: {
    ...styText,
    marginTop: 10
},

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

您使用了什么方法来查找重复的密钥?我想我在第三方库中有一个重复的密钥,我不知道如何识别哪一个。搜索一百个节点模块并不有趣。有人有什么想法吗?现在不太确定了,我想我只是浏览了bug之前使用过的组件,然后搜索了
。但是,在
中查找
键至少两次的正则表达式在这种情况下可能会有所帮助?!虽然您的错误当然也可能有另一个原因……肯定有某种lint实用程序可以捕获这样的内容吗?我猜Android有点像react native lint。但它没有确定问题的位置。这次我在JSX组件定义中找到了重新定义的属性。我在样式表样式定义中也有它们。我错过了真正的编译器。您可以在node_modules目录
ack'^.*(key\s*=){1}.*(key\s*=){1}.*$”
中使用此正则表达式,如果您有重复的样式键值对,也可能会出现这种情况。