2016-04-06 37 views
3

我得到仿真器下面的錯誤(測試Genymotion和谷歌股票模擬器)和物理設備(三星S4)上運行react-native run-android後:陣營Android原生語法錯誤:試圖重新定義屬性「關鍵」

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
  • 我也嘗試將Dev Settings/Debug server host & port for device更改爲0.0.0.0:8081而不是MY_IP:8081,其中MY_IP是我的PC的IP。

我跑反應本土0.22.2

回答

12

的問題是:key在一個視圖定義兩次的地方,即像

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

所以只是刪除key屬性之一。按壓在陣營機菜單Start Chrome Debugging

起初,該應用將再次運行,但該錯誤將在相應的瀏覽器標籤的控制檯顯示:

中間步驟找到解決方案。 然後它顯示了一個更好的錯誤消息。

奇怪的是,這個錯誤不會發生在iOS上。

+0

你用什麼方法找到重複密鑰? 我想我有一個第三方庫中的重複鍵,我不知道如何確定哪一個。搜索一百個node_modules並不好玩。 想法任何人? –

+0

不完全確定,我想我只是在bug之前瀏覽過我使用過的組件並搜索了'key'。然而,在'< />'內至少兩次找到'key'的正則表達式可能有助於這種情況?!雖然你的錯誤當然也可能有另一個原因.. – Andru

+0

**當然**有一些** lint公用事業**,可以捕捉這樣的東西? 我猜Android有點像反原生lint。除了它不能識別問題的*位置*。這次我在JSX組件定義中找到了重新定義的屬性。我也有他們在樣式表樣式定義。我想念真正的編譯器。 –

1

我有同樣的錯誤,但用不同的關鍵字

在我的情況下,關鍵字是在我的CSS樣式性能宣佈兩次。

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

iOS上沒有崩潰或警告,但導致Android崩潰。

0

在v0.49上遇到同樣的錯誤。花了很多時間,終於發現我的css聲明中有重複項:

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

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

剛剛刪除的第二個聲明修正了錯誤。

相關問題