2016-04-06 11 views
3

私はreact-native run-androidを実行した後エミュレータ(GenymotionとGoogle証券エミュレータをテストした)と物理デバイス(サムスンS4)上で、次のエラーを取得:は、ネイティブのAndroidにSyntaxErrorに反応:プロパティを再定義しようとしました「キー」

enter image description here

エラーが出型付け: 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において同様のエラー(またjava.util.concurrent.ExecutionException)はGenymotionで発生そこ溶液ジ私を助けてはいけない、すなわちadb reverse tcp:8081 tcp:8081
  • また、MY_IP:8081の代わりにDebug server host & port for device0.0.0.0:8081に変更しようとしました。ここで、MY_IPは私のPCのIPです。私が実行している

は反応するネイティブ0.22.2

答えて

12

問題だった:keyは、どこかのビューで二回定義されていたつまり、何かのような

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

だからkeyプロパティのいずれかを削除。解決策を見つけるために

中間ステップ:最初は

を反応させるのネイティブメニューにStart Chrome Debuggingを押すと、アプリが再び実行されますが、エラーは、対応するブラウザタブのコンソールに表示されます。 それは少し良いエラーメッセージを表示します。

奇妙なことに、このエラーはiOSでは発生しません。

+0

重複するキーを見つけるためにどのような方法を使用しましたか? 私はサードパーティ製のライブラリに重複したキーを持っていると思いますが、どのキーをどのように識別するかわかりません。 100個のnode_modulesを検索するのは楽しいことではありません。 アイデアは誰ですか? –

+0

これ以上はっきりとは分かりませんが、バグの前に作業していたコンポーネントを調べて、 'key'を検索したと思います。しかし、 '< />'の中で 'key'を少なくとも2回見つけ出す正規表現は、この場合に役立つでしょうか?もちろん、あなたのエラーにも別の原因があるかもしれません。 – Andru

+0

**確かに**このようなものを捕まえることができる**リントユーティリティ**のいくつかの種類がありますか? Androidは反応ネイティブlintのようなものだと思います。それは問題の*場所*を特定しないことを除いて。今回は、JSXコンポーネント定義の中で再定義されたプロパティが見つかりました。私はスタイルシートのスタイル定義でそれらを持っていました。私は実際のコンパイラが恋しい。 –

1

私は同じエラーがあったが、別のキーワードで

私の場合はキーワードがスタイルプロパティ私のCSSで2回宣言されました。

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

iOSではクラッシュや警告は発生しませんが、Androidではクラッシュは発生しません。

0

v0.49で同じエラーが発生しました。多くの時間を費やし、最終的には重複が私のCSSの宣言であることが判明:

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

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

はちょうど2番目の宣言は、エラーを修正し削除。

関連する問題