React-Native Packager 失败:重复的模块名称
Posted
技术标签:
【中文标题】React-Native Packager 失败:重复的模块名称【英文标题】:React-Native Packager Failure: Duplicate module name 【发布时间】:2016-12-17 13:36:24 【问题描述】:这在开发过程中似乎是随机发生的。尝试运行npm start
或react-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,甚至重新安装了所有东西,包括npm
、rnpm
,甚至升级了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】:
sudo
或 chown
没有为我修复它。我从同一个库得到了同样的错误,很奇怪:
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 错误导致开发服务器崩溃?
使用 Native sbt Packager 为 windows 打包 Play 应用程序
React-native :app:bundleReleaseSourceMapUpload 失败
react-native android中的gradlew assembleRelease命令未生成app-release.apk
React-native 构建失败:“无法创建任务 ':app:copyDownloadableDepsToLibs'”