当我将特定的npm包安装到我的react本机项目并尝试运行它时,我收到以下错误:
This error is caused by a @providesModule declaration with the same name accross two different files.
Error: @providesModule naming collision:
Duplicate module name: promiseRejectionIsError
Paths:
projectname/node_modules/react-native-stripe-api/node_modules/react-native/Libraries/promiseRejectionIsError.js collides with
projectname/node_modules/react-native/Libraries/promiseRejectionIsError.js
问题:这个包 react-native-stripe-api
似乎正在安装另一个react和react-native模块,它与所有项目模块冲突 .
我认为这是因为在react-native-stripe-api / package.json中将特定版本的react和react-native模块定义为依赖项:
"dependencies": {
"babel-polyfill": "6.9.1",
"react": "15.1.0",
"react-native": "0.27.2"
},
似乎应该删除这些 .
有更多关于npm知识的人可以确认这实际上是定义节点依赖关系的正确方法 . 以及解决问题的适当解决方案 .
2 回答
您的评估是正确的
他们应该引用
react
作为peerDependenciesQuickfix: 删除额外的反应版本
Longfix: Submit a pull request作为peer dependency做出反应
您应该删除
node_modules
文件夹,然后执行npm cache clean
,确保项目根文件夹下没有临时缓存文件或文件夹(如react-native-packager-cache-81b2c446
等),然后重新执行npm install