React Native:在两个不同文件中使用相同名称的@providesModule声明

时间:2017-02-10 15:36:31

标签: javascript react-native symlink

我们有两个repos,两个都有react-native作为依赖项;一个是实际的RN应用程序,另一个是包含许多自定义react-native组件的UI包。

当我使用RN应用程序符号链接(使用npm link)UI包并尝试启动js服务器时,它会抛出以下错误:

This error is caused by a @providesModule declaration with the same name across two different files.

这似乎是因为它在UI包的react-native副本中拾取了相同的RN文件。

我知道守望者没有使用符号链接存在问题,但我认为这是不同的 - 与两个react-native模块有关。有没有人知道如何解决这个问题?我确保两者都是相同的版本号,但仍然没有。

2 个答案:

答案 0 :(得分:12)

这也一直在摧毁我的一天。作为一种快速解决方法,您可以在react-native-router-flux中删除node_modules文件夹中的react-native文件夹。(node_modules> react-native-router-flux> node_modules> react -native )丑陋,但至少会让你暂时保持正常运行

答案 1 :(得分:0)

当您在依赖关系树中有两个相同命名的模块时会发生这种情况,通常是因为您有两个包含@providesModule声明的包的副本(通常为react-native)。一个完整的示例错误:

This warning is caused by a @providesModule declaration with the same name across two different files.
jest-haste-map: @providesModule naming collision:
  Duplicate module name: yargs
  Paths:
  /Users/me/Documents/git/MyProject/node_modules/react-native-macos/node_modules/yargs/package.json collides with:
  /Users/me/Documents/git/MyProject/node_modules/react-native/node_modules/yargs/package.json

这是我处理React Native的分支react-native-macos的症状,但已将react-native安装到同一个回购中。

在我的情况下,我只需要卸载我自己安装的react-native即可继续;在@ Hafiz的案例中,他的react-native-router-flux依赖关系在内部捆绑了自己的react-native副本,所以他不得不手动删除它 - 这个错误在repo所有者身上。令人高兴的是,他们已经解决了issue