2016-01-13 3 views
0

Я бег очень простой код, используя реагирующие-нативную TableViewОшибки графы зависимости: Ошибка: Именование столкновение обнаружено

'use strict'; 

var React = require('react-native'); 
var { AppRegistry } = React; 
var TableView = require('react-native-tableview'); 
var Section = TableView.Section; 
var Item = TableView.Item; 

class AwesomeProject extends React.Component { 
    render(){ 
     return (
      <TableView style={{flex:1}} 
         allowsToggle={true} 
         allowsMultipleSelection={true} 
         tableViewStyle={TableView.Consts.Style.Grouped} 
         tableViewCellStyle={TableView.Consts.CellStyle.Subtitle} 
         onPress={(event) => console.log(event)}> 
       <Section label="Section 1" arrow={true}> 
        <Item value="1" detail="Detail1" >Item 1</Item> 
        <Item value="2">Item 2</Item> 
       </Section> 
       <Section label="Section 2" arrow={false}> 
        <Item selected={true}>Item 1</Item> 
        <Item>Item 2</Item> 
        <Item>Item 3</Item> 
       </Section> 
      </TableView> 
     ); 
    } 
} 

AppRegistry.registerComponent('AwesomeProject',() => AwesomeProject); 

зависимости:

"dependencies": { 
    "react-native": "^0.17.0", 
    "react-native-navbar": "^1.1.6", 
    "react-native-router": "^0.2.1", 
    "react-native-tableview": "^1.4.6" 
} 

И я получаю ошибку:

Error building DependencyGraph: 
Error: Naming collision detected: /Users/sandbox/native/test/AwesomeProject/node_modules/react-native-router/node_modules/react-native/packager/react-packager/src/DependencyResolver/haste/polyfills/String.prototype.es6.js collides with /Users/sandbox/native/test/AwesomeProject/node_modules/react-native/packager/react-packager/src/Resolver/polyfills/String.prototype.es6.js 
    at HasteMap._updateHasteMap (HasteMap.js:123:13) 
    at HasteMap.js:94:28 
    at tryCallOne (/Users/sandbox/native/test/AwesomeProject/node_modules/promise/lib/core.js:37:12) 
    at /Users/sandbox/native/test/AwesomeProject/node_modules/promise/lib/core.js:123:15 
    at flush (/Users/sandbox/native/test/AwesomeProject/node_modules/asap/raw.js:50:29) 
    at doNTCallback0 (node.js:417:9) 
    at process._tickCallback (node.js:346:13) 

Я заметил, что многие люди сталкиваются с этой проблемой, но все еще нет четкого решения, библиотека которого виновата y и как этого избежать.

ответ

2

Ошибка указывает на наличие двух копий String.prototype.es6.js, и упаковщик не может игнорировать один из них и, таким образом, вы получаете сообщение об ошибке.

Вы используете npm2 или npm3? В качестве обходного пути npm3 будет сглаживать зависимости, которые должны позволить вам двигаться вперед путем устранения дублирования (если вы убедитесь, что оба они указаны в одной и той же версии).

Вы можете либо install npm3 как отдельный глобальный пакет, а затем запустить npm3 install, или вы можете обновить весь пакет npm через npm install -g [email protected]. Кроме того, убедитесь, что вы удалили содержимое своего каталога node_modules, прежде чем переустанавливать свои пакеты npm, если вы захотите обновить.

С этим подходом есть плюсы и минусы, и ответный ответ может включать Реакт в качестве равноправной зависимости по дороге, которая может смягчить эту проблему. Кажется, что react-native-router обязательно нуждается в регулярном React, так как используемые компоненты зависят от react-native, поэтому стоит обратить внимание на это репо и удалить прямые зависимости от React, если у вас все еще есть проблемы с npm3 или вы не хотите используй это.

+0

Благодарим вас за ответ. Я тоже получил его на GitHub, и да, 'response-native-router' использовал старую версию native-native, теперь исправлено https://github.com/t4t5/react-native-router/commit/8ee6c940b025bfe69e1033bf15af14f55faae4e6 но еще не опубликован –

Смежные вопросы