React-Native Packager 失败:重复的模块名称

Posted

技术标签:

【中文标题】React-Native Packager 失败:重复的模块名称【英文标题】:React-Native Packager Failure: Duplicate module name 【发布时间】:2016-12-17 13:36:24 【问题描述】:

这在开发过程中似乎是随机发生的。尝试运行npm startreact-native run-ios 时,出现以下错误:

Failed to build DependencyGraph: @providesModule naming collision:
  Duplicate module name: react-native-vector-icons
  Paths: /Users/chandlervdw/Repos/Relay/mobile/node_modules/react-native/local-cli/rnpm/core/test/fixtures/files/package.json collides with /Users/chandlervdw/Repos/Relay/mobile/node_modules/react-native/Libraries/Animated/release/package.json

This error is caused by a @providesModule declaration with the same name accross two different files.
Error: @providesModule naming collision:
  Duplicate module name: react-native-vector-icons
  Paths: /Users/chandlervdw/Repos/Relay/mobile/node_modules/react-native/local-cli/rnpm/core/test/fixtures/files/package.json collides with /Users/chandlervdw/Repos/Relay/mobile/node_modules/react-native/Libraries/Animated/release/package.json

This error is caused by a @providesModule declaration with the same name accross two different files.
    at HasteMap._updateHasteMap (/Users/chandlervdw/Repos/Relay/mobile/node_modules/node-haste/lib/DependencyGraph/HasteMap.js:162:15)
    at /Users/chandlervdw/Repos/Relay/mobile/node_modules/node-haste/lib/DependencyGraph/HasteMap.js:140:25

奇怪的是,/Users/chandlervdw/Repos/Relay/mobile/node_modules/react-native/local-cli/rnpm/core/test/fixtures/files/package.json 实际上确实将react-native-vector-icons 列为模块的名称???

如果我删除该文件,错误将不再发生,但打包程序卡在 93% 并抱怨找不到完全不相关的库。

我吹走了我的 repo,甚至重新安装了所有东西,包括npmrnpm,甚至升级了node。我正在运行与我的队友相同的版本,他们能够毫无问题地运行打包程序。

【问题讨论】:

我知道这听起来很傻,但是您是否尝试过使用 sudo 权限运行,我在尝试为 android 构建 react-native 并使用 sudo 运行时遇到了类似的错误解决了冲突。 @Alex 你开个玩笑。那行得通!但是为什么?!?!因为这个,我失去了一整天的工作...... @chandlervdw 相信我,伙计,这周我确实发生了同样的事情,很抱歉你不得不在这个错误上浪费这么多时间......我也把头撞在墙上了像你一样用尽所有其他途径!难道你不只是喜欢 npm 包管理器,有时哈哈!很高兴它为你排序:) 我的猜测是,在构建该软件包时,它需要访问一些受限资源,这些资源需要 sudo 授予的提升权限...我只是希望错误代码不要那么模糊! 谢谢 - 周末花了几个小时得到随机的红屏,难以置信!很棒的提示,已添加书签! 【参考方案1】:

将此作为答案发布,以防其他人将来遇到此问题。

当节点包管理器运行初始构建阶段时,以sudo 权限运行npm start 会授予正确的权限。这似乎只有在您运行的 shell/用户具有受限权限时才会发生。强制将权限升级到 sudo 可以让包管理器完全控制以完成构建。

【讨论】:

【参考方案2】:

我遇到了类似

的错误
Failed to build DependencyGraph: @providesModule naming collision:
Failed to build DependencyGraph: @providesModule naming collision:
Duplicate module name: accepts
Duplicate module name: accepts

我通过删除 npm 的缓存 .npm 并用 --reset-cache 重新运行 packager 解决了这个问题

rm -rf ~/.npm

【讨论】:

这应该是公认的答案,因为我发现另一种答案是“作弊”,因为我通常从未使用过sudo @Greg 我们不要忘记“Sudo”在 Windows 上不存在,不应该用于绕过权限错误。【参考方案3】:

sudochown 没有为我修复它。我从同一个库得到了同样的错误,很奇怪:

Failed to build DependencyGraph: @providesModule naming collision:
 Duplicate module name: react-native-vector-icons
  Paths: /Users/collumj/research/k9fresh/ios/build/Build/Products/Debug-iphonesimulator/kisharNine.app/package.json collides with /Users/collumj/research/k9fresh/node_modules/react-native/local-cli/core/__fixtures__/files/package.json

遇到这种情况时不需要sudo

警告:破坏性,请先签入。

rm -rf android ios
git reset --hard
npm start

这每次都会修复它。注册护士 0.39.2

编辑:稍后,我想我通过取消链接react-native-vector-icons lib 解决了这个问题;我认为我得到的说明让我在链接上加倍努力,或者不知何故已经过时了。

【讨论】:

【参考方案4】:

在清理 nvm 缓存并重新安装所有 node_modules 后,我意识到我遇到了这个问题,因为 react-native-router-flux。

我已将其从react-native-router-flux@3.38.1 降级修复为react-native-router-flux@3.38.0

更多细节在这里: https://github.com/aksonov/react-native-router-flux/issues/1816

【讨论】:

以上是关于React-Native Packager 失败:重复的模块名称的主要内容,如果未能解决你的问题,请参考以下文章

React Native packager.js 错误导致开发服务器崩溃?

win7下react-native安卓打包踩坑

使用 Native sbt Packager 为 windows 打包 Play 应用程序

React-native :app:bundleReleaseSourceMapUpload 失败

react-native android中的gradlew assembleRelease命令未生成app-release.apk

React-native 构建失败:“无法创建任务 ':app:copyDownloadableDepsToLibs'”