使用 expo 进行 eas 构建时出现依赖错误

0 javascript firebase react-native google-signin expo

在尝试使用 expo 构建 .apk 文件时,我收到此错误:

[标准错误] npm

[标准错误] 错误!代码 ERESOLVE

[标准错误] npm

[标准错误] 错误!ERESOLVE 无法解决

[stderr] npm 错误!

[标准错误] npm

[标准错误] 错误!解析时:@react-native-google-signin/google-signin@8.2.1

[标准错误] npm

[标准错误] 错误!找到:@expo/config-plugins@5.0.4

[stderr] npm 错误!node_modules/@expo/config-plugins

[stderr] npm 错误!来自根项目的 @expo/config-plugins@"^5.0.4"

[stderr] npm 错误!

[stderr] @expo/config-plugins@"~5.0.3" 来自 @expo/cli@0.4.9

[stderr] npm 错误!节点模块/@expo/cli

[stderr] npm 错误!@expo/cli@"0.4.9" 来自 expo@47.0.5

[stderr] npm 错误!节点模块/博览会

[stderr] npm 错误!来自根项目的 expo@"~47.0.5"

[stderr] npm 错误!另外 12 个(expo-application、expo-constants、expo-dev-client,...)

[stderr] npm 错误!另外 5 个(@expo/config、@expo/prebuild-config,...)

[stderr] npm 错误!

[stderr] npm 错误!无法解决依赖关系:

[stderr] npm 错误!来自@react-native-google-signin/google-signin@8.2.1的peerOptional @expo/config-plugins@"^4.1.0"

[stderr] npm 错误!node_modules/@react-native-google-signin/google-signin

[stderr] npm 错误!来自根项目的 @react-native-google-signin/google-signin@"^8.2.1"

[stderr] npm 错误!

[标准错误] npm

[标准错误] 错误!对等依赖冲突:@expo/config-plugins@4.1.5

[stderr] npm 错误!node_modules/@expo/config-plugins

[stderr] npm 错误!来自@react-native-google-signin/google-signin@8.2.1的peerOptional @expo/config-plugins@"^4.1.0"

[stderr] npm 错误!node_modules/@react-native-google-signin/google-signin

[stderr] npm 错误!来自根项目的 @react-native-google-signin/google-signin@"^8.2.1"

[stderr] npm 错误!

[stderr] npm 错误!修复上游依赖冲突,或重试

[stderr] npm 错误!此命令与 --force 或 --legacy-peer-deps

[stderr] npm 错误!接受不正确的(并且可能损坏的)依赖关系解析。

谁能向我解释一下我该如何解决?我已经尝试过 --force、npm install、--legacy--peer-deps 但什么也没有......

提前致谢 !!

bre*_*tne 5

发生这种情况是因为@react-native-google-signin/google-signin对旧版本的@expo/config-plugins. 如果您在本地没有看到此信息,那么您可能使用的是旧版本的 npm - 由于该版本中对等依赖项处理方式的变化,此错误消息将在 npm 7 及更高版本中出现。看到这个问题

您可以执行以下任一操作来解决此问题:

  • 在 EAS Build 上设置 npm 版本以匹配您的本地版本。您可以通过在EAS Build 预安装挂钩中安装特定的 npm 版本来完成此操作
  • 在EAS Build 预安装挂钩中设置旧版对等 deps 选项:npm config set legacy-peer-deps true
  • 在你的项目中创建一个,在其中.npmrc设置为 true,将其添加到 gitlegacy-peer-deps
  • 切换到yarn classic:安装yarn classic,删除package-lock.jsonyarn在项目中运行生成yarn.lock,运行build。