我使用react-native-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)
我注意到很多人遇到了这个问题,但仍然没有明确的解决方案,哪个库有罪以及如何避免它。
答案 0 :(得分:2)
错误表明有String.prototype.es6.js
的两个副本,并且打包程序无法忽略其中一个,因此您收到错误。
您使用的是npm2还是npm3?作为一种解决方法,npm3将平衡依赖关系,这将允许您通过重复数据删除反应向前推进(假设您确保它们都指向同一版本)。
您可以install npm3作为单独的全局程序包,然后运行npm3 install
,也可以通过npm install -g npm@3.0-latest
升级整个npm程序包。此外,如果您选择升级,请确保在重新安装npm软件包之前删除node_modules
目录的内容。
这种方法有利有弊,反应本机可能包括React作为同行的依赖关系,这可能会缓解这个问题。似乎react-native-router
不一定需要常规React
,因为正在使用的组件依赖于react-native
所以如果你'可能值得这个repo并删除对React的直接依赖关系。仍然遇到npm3
或者不想使用它的问题。