expo / eas-cli

Fastest way to build, submit, and update iOS and Android apps
https://docs.expo.dev/eas/
MIT License
851 stars 86 forks source link

EAS fails to install pnpm dependencies for Android #1941

Open robertherber opened 1 year ago

robertherber commented 1 year ago

Build/Submit details page URL

https://expo.dev/accounts/kingstinct/projects/lifeline-dev/builds/e398532d-5f57-467d-a456-4318844eb3ab (node 20) https://expo.dev/accounts/kingstinct/projects/lifeline-dev/builds/28ec161c-a6b3-4415-93f3-1608e7f8daba (node 18)

Summary

I'm using pnpm in a monorepo setup. What I've tried and what works:

I'm fairly sure just being able to specify pnpm version would solve it, for example in eas.json or respecting packageManager in package.json. I know you don't officially support it yet - but just having this option would take it a long way.

Since it works on iOS I'm guessing the EAS build image is using a different pnpm version on iOS (closer to what I'm using locally - i.e. 8.6.9).

Also - it would help to be able to see which version of pnpm is used in the logs on EAS, I can't seem to see it currently.

Managed or bare?

managed

Environment

expo-env-info 1.0.5 environment info: System: OS: macOS 13.4.1 Shell: 5.9 - /bin/zsh Binaries: Node: 20.3.1 - ~/.nvm/versions/node/v20.3.1/bin/node Yarn: 1.22.19 - /opt/homebrew/bin/yarn npm: 9.6.7 - ~/.nvm/versions/node/v20.3.1/bin/npm Watchman: 2023.02.13.00 - /opt/homebrew/bin/watchman Managers: CocoaPods: 1.11.3 - /Users/robertherber/.rbenv/shims/pod SDKs: iOS SDK: Platforms: DriverKit 22.4, iOS 16.4, macOS 13.3, tvOS 16.4, watchOS 9.4 Android SDK: API Levels: 28, 29, 31, 33, 33 Build Tools: 28.0.3, 29.0.2, 30.0.3, 31.0.0, 33.0.0, 33.0.1 System Images: android-30 | Google APIs Intel x86 Atom, android-31 | Google APIs ARM 64 v8a, android-33 | Google APIs ARM 64 v8a, android-33 | Google APIs Intel x86 Atom_64 IDEs: Android Studio: 2022.1 AI-221.6008.13.2211.9619390 Xcode: 14.3.1/14E300c - /usr/bin/xcodebuild npmPackages: expo: ^49.0.3 => 49.0.3 react: 18.2.0 => 18.2.0 react-dom: 18.2.0 => 18.2.0 react-native: ~0.72.3 => 0.72.3 react-native-web: ~0.19.6 => 0.19.6 npmGlobalPackages: eas-cli: 3.16.0 Expo Workflow: managed

Error output

There are a few suspect things in the build output for node 20 (the lockfile-incompatibility as well as the ERR_INVALID_THIS):

Install dependencies output (Node 20) ``` We detected that 'apps/lifeline' is a pnpm workspace Running "pnpm install --no-frozen-lockfile" in /home/expo/workingdir/build directory Scope: all 3 workspace projects WARN  Ignoring not compatible lockfile at /home/expo/workingdir/build/pnpm-lock.yaml WARN  GET https://registry.npmjs.com/@babel%2Fcore error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@babel%2Fplugin-proposal-export-namespace-from error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@babel%2Fplugin-transform-class-properties error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@graphql-codegen%2Fcli error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@graphql-codegen%2Fnear-operation-file-preset error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@graphql-codegen%2Ftypescript-operations error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@graphql-codegen%2Ftypescript-urql error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@graphql-eslint%2Feslint-plugin error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@storybook%2Faddon-actions error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@storybook%2Faddon-controls error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@storybook%2Faddon-essentials error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@storybook%2Faddon-links error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@storybook%2Faddon-ondevice-actions error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@storybook%2Faddon-ondevice-controls error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@storybook%2Faddon-react-native-web error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@storybook%2Fbuilder-webpack5 error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@babel%2Fcore error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left. WARN  GET https://registry.npmjs.com/@babel%2Fplugin-proposal-export-namespace-from error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left. WARN  GET https://registry.npmjs.com/@babel%2Fplugin-transform-class-properties error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.  WARN  GET https://registry.npmjs.com/@graphql-codegen%2Fcli error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.  WARN  GET https://registry.npmjs.com/@graphql-codegen%2Fnear-operation-file-preset error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left.  WARN  GET https://registry.npmjs.com/@graphql-codegen%2Ftypescript-operations error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left. WARN  GET https://registry.npmjs.com/@graphql-codegen%2Ftypescript-urql error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left. WARN  GET https://registry.npmjs.com/@graphql-eslint%2Feslint-plugin error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left. WARN  GET https://registry.npmjs.com/@storybook%2Faddon-actions error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left. WARN  GET https://registry.npmjs.com/@storybook%2Faddon-controls error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left. WARN  GET https://registry.npmjs.com/@storybook%2Faddon-essentials error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left. WARN  GET https://registry.npmjs.com/@storybook%2Faddon-links error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left. WARN  GET https://registry.npmjs.com/@storybook%2Faddon-ondevice-actions error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left. WARN  GET https://registry.npmjs.com/@storybook%2Faddon-ondevice-controls error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left. WARN  GET https://registry.npmjs.com/@storybook%2Faddon-react-native-web error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left. WARN  GET https://registry.npmjs.com/@storybook%2Fbuilder-webpack5 error (ERR_INVALID_THIS). Will retry in 1 minute. 1 retries left. WARN  GET https://registry.npmjs.com/@storybook%2Fmanager-webpack5 error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. ERR_PNPM_META_FETCH_FAIL  GET https://registry.npmjs.com/@babel%2Fcore: Value of "this" must be of type URLSearchParams WARN  GET https://registry.npmjs.com/@storybook%2Freact error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@storybook%2Freact-native error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@types%2Fjest error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@types%2Flodash error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@types%2Freact error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@types%2Fvalidator error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@typescript-eslint%2Feslint-plugin error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/@typescript-eslint%2Fparser error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/babel-loader error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/babel-plugin-transform-inline-environment-variables error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/concurrently error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/eslint error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/eslint-config-airbnb error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/eslint-config-airbnb-base error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. WARN  GET https://registry.npmjs.com/eslint-config-kingstinct error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left. pnpm exited with non-zero code: 1 ```

When using node 18 the packages are installed but fails later, probably because of the lockfile-incompatibilty which I guess is a result of using a different pnpm version:

Install dependencies output (Node 18) ``` We detected that 'apps/lifeline' is a pnpm workspace Running "pnpm install --no-frozen-lockfile" in /home/expo/workingdir/build directory Scope: all 3 workspace projects WARN  Ignoring not compatible lockfile at /home/expo/workingdir/build/pnpm-lock.yaml Progress: resolved 1, reused 0, downloaded 0, added 0 Progress: resolved 18, reused 0, downloaded 3, added 0 Progress: resolved 31, reused 0, downloaded 12, added 0 Progress: resolved 49, reused 0, downloaded 29, added 0 Progress: resolved 61, reused 0, downloaded 48, added 0 Progress: resolved 87, reused 0, downloaded 69, added 0 Progress: resolved 102, reused 0, downloaded 79, added 0 Progress: resolved 110, reused 0, downloaded 89, added 0 Progress: resolved 129, reused 0, downloaded 103, added 0 Progress: resolved 151, reused 0, downloaded 126, added 0 Progress: resolved 165, reused 0, downloaded 144, added 0 packages/ui |  WARN  deprecated stable@0.1.8 packages/ui |  WARN  deprecated uuid-browser@3.1.0 Progress: resolved 210, reused 0, downloaded 181, added 0 Progress: resolved 234, reused 0, downloaded 200, added 0 Progress: resolved 275, reused 0, downloaded 241, added 0 Progress: resolved 298, reused 0, downloaded 264, added 0 Progress: resolved 337, reused 0, downloaded 296, added 0 Progress: resolved 362, reused 0, downloaded 318, added 0 Progress: resolved 403, reused 0, downloaded 354, added 0 packages/ui |  WARN  deprecated uuid@3.4.0 Progress: resolved 428, reused 0, downloaded 387, added 0 packages/ui |  WARN  deprecated uuid@3.4.0 Progress: resolved 445, reused 0, downloaded 402, added 0 Progress: resolved 461, reused 0, downloaded 417, added 0 Progress: resolved 491, reused 0, downloaded 451, added 0 Progress: resolved 505, reused 0, downloaded 467, added 0 Progress: resolved 520, reused 0, downloaded 480, added 0 Progress: resolved 536, reused 0, downloaded 490, added 0 Progress: resolved 564, reused 0, downloaded 515, added 0 apps/lifeline |  WARN  deprecated uuid@3.4.0 Progress: resolved 593, reused 0, downloaded 544, added 0 Progress: resolved 666, reused 0, downloaded 603, added 0 packages/ui |  WARN  deprecated stable@0.1.8 Progress: resolved 763, reused 0, downloaded 693, added 0 Progress: resolved 823, reused 0, downloaded 739, added 0 Progress: resolved 900, reused 0, downloaded 828, added 0 Progress: resolved 999, reused 0, downloaded 910, added 0 Progress: resolved 1064, reused 0, downloaded 972, added 0 packages/ui |  WARN  deprecated uuid@3.4.0 Progress: resolved 1132, reused 0, downloaded 1036, added 0 Progress: resolved 1147, reused 0, downloaded 1062, added 0 Progress: resolved 1210, reused 0, downloaded 1104, added 0 Progress: resolved 1277, reused 0, downloaded 1171, added 0 Progress: resolved 1372, reused 0, downloaded 1258, added 0 Progress: resolved 1465, reused 0, downloaded 1353, added 0 Progress: resolved 1601, reused 0, downloaded 1480, added 0 packages/ui |  WARN  deprecated @npmcli/move-file@1.1.2 Progress: resolved 1699, reused 0, downloaded 1566, added 0 packages/ui |  WARN  deprecated sane@4.1.0 Progress: resolved 1783, reused 0, downloaded 1649, added 0 packages/ui |  WARN  deprecated stable@0.1.8 Progress: resolved 1907, reused 0, downloaded 1756, added 0 Progress: resolved 2044, reused 0, downloaded 1889, added 0 packages/ui |  WARN  deprecated trim@0.0.1 Progress: resolved 2147, reused 0, downloaded 1980, added 0 packages/ui |  WARN  deprecated chokidar@2.1.8 packages/ui |  WARN  deprecated source-map-resolve@0.5.3 packages/ui |  WARN  deprecated uglify-es@3.3.9 packages/ui |  WARN  deprecated fsevents@1.2.13 packages/ui |  WARN  deprecated resolve-url@0.2.1 packages/ui |  WARN  deprecated urix@0.1.0 packages/ui |  WARN  deprecated source-map-url@0.4.1 Progress: resolved 2323, reused 0, downloaded 2151, added 0 packages/ui |  WARN  deprecated uuid@3.4.0 Progress: resolved 2456, reused 0, downloaded 2283, added 0 Packages: +2613 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Progress: resolved 2456, reused 0, downloaded 2286, added 0 Progress: resolved 2456, reused 0, downloaded 2287, added 0 Packages are hard linked from the content-addressable store to the virtual store. Content-addressable store is at: /home/expo/.local/share/pnpm/store/v3 Virtual store is at: node_modules/.pnpm Progress: resolved 2456, reused 0, downloaded 2307, added 18 Progress: resolved 2456, reused 0, downloaded 2307, added 19 Progress: resolved 2456, reused 0, downloaded 2341, added 158 Progress: resolved 2456, reused 0, downloaded 2362, added 247 Progress: resolved 2456, reused 0, downloaded 2390, added 306 Progress: resolved 2456, reused 0, downloaded 2435, added 438 Progress: resolved 2456, reused 0, downloaded 2436, added 481 Progress: resolved 2456, reused 0, downloaded 2438, added 768 Progress: resolved 2456, reused 0, downloaded 2438, added 769 Progress: resolved 2456, reused 0, downloaded 2439, added 1084 Progress: resolved 2456, reused 0, downloaded 2439, added 1085 Progress: resolved 2456, reused 0, downloaded 2439, added 1339 Progress: resolved 2456, reused 0, downloaded 2439, added 1340 Progress: resolved 2456, reused 0, downloaded 2439, added 1480 Progress: resolved 2456, reused 0, downloaded 2439, added 1481 Progress: resolved 2456, reused 0, downloaded 2439, added 1490 Progress: resolved 2456, reused 0, downloaded 2439, added 1491 Progress: resolved 2456, reused 0, downloaded 2439, added 1706 Progress: resolved 2456, reused 0, downloaded 2439, added 1797 Progress: resolved 2456, reused 0, downloaded 2439, added 1912 Progress: resolved 2456, reused 0, downloaded 2439, added 1988 Progress: resolved 2456, reused 0, downloaded 2439, added 1989 Progress: resolved 2456, reused 0, downloaded 2439, added 2116 Progress: resolved 2456, reused 0, downloaded 2439, added 2117 Progress: resolved 2456, reused 0, downloaded 2440, added 2387 Progress: resolved 2456, reused 0, downloaded 2440, added 2388 Progress: resolved 2456, reused 0, downloaded 2440, added 2613, done .../node_modules/core-js-pure postinstall$ node -e "try{require('./postinstall')}catch(e){}" .../node_modules/core-js postinstall$ node -e "try{require('./postinstall')}catch(e){}" .../node_modules/core-js-pure postinstall: Done .../node_modules/core-js postinstall: Done .../node_modules/@sentry/cli install$ node ./scripts/install.js .../node_modules/@sentry/cli install$ node ./scripts/install.js .../node_modules/@sentry/cli install: [sentry-cli] Downloading from https://downloads.sentry-cdn.com/sentry-cli/2.17.5/sentry-cli-Linux-x86_64 .../node_modules/@sentry/cli install: [sentry-cli] Downloading from https://downloads.sentry-cdn.com/sentry-cli/2.19.4/sentry-cli-Linux-x86_64 .../node_modules/@sentry/cli install: [sentry-cli] Checksum validation passed. .../node_modules/@sentry/cli install: [sentry-cli] Checksum validation passed. .../node_modules/@sentry/cli install: Done .../node_modules/@sentry/cli install: Done . prepare$ husky install . prepare: fatal: not a git repository (or any of the parent directories): .git . prepare: husky - git command not found, skipping install . prepare: Done apps/lifeline postinstall$ if [ -n "$CI" ]; then exit 0; fi && npx expo-native-dependency-hash expo-app-update apps/lifeline postinstall: Done dependencies: + expo 49.0.3 + husky 8.0.3 ERR_PNPM_PEER_DEP_ISSUES  Unmet peer dependencies . └─┬ expo └─┬ babel-preset-expo ├─┬ @babel/plugin-proposal-decorators │ ├── ✕ missing peer @babel/core@^7.0.0-0 │ ├─┬ @babel/helper-create-class-features-plugin │ │ ├── ✕ missing peer @babel/core@^7.0.0 │ │ └─┬ @babel/helper-replace-supers │ │ └── ✕ missing peer @babel/core@^7.0.0 │ └─┬ @babel/plugin-syntax-decorators │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-proposal-export-namespace-from │ ├── ✕ missing peer @babel/core@^7.0.0-0 │ └─┬ @babel/plugin-syntax-export-namespace-from │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-proposal-object-rest-spread │ ├── ✕ missing peer @babel/core@^7.0.0-0 │ ├─┬ @babel/helper-compilation-targets │ │ └── ✕ missing peer @babel/core@^7.0.0 │ ├─┬ @babel/plugin-syntax-object-rest-spread │ │ └── ✕ missing peer @babel/core@^7.0.0-0 │ └─┬ @babel/plugin-transform-parameters │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-react-jsx │ ├── ✕ missing peer @babel/core@^7.0.0-0 │ └─┬ @babel/plugin-syntax-jsx │ └── ✕ missing peer @babel/core@^7.0.0-0 └─┬ @babel/preset-env ├── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression │ └── ✕ missing peer @babel/core@^7.0.0 ├─┬ @babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining │ ├── ✕ missing peer @babel/core@^7.13.0 │ └─┬ @babel/plugin-transform-optional-chaining │ ├── ✕ missing peer @babel/core@^7.0.0-0 │ └─┬ @babel/plugin-syntax-optional-chaining │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-proposal-private-property-in-object │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-syntax-async-generators │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-syntax-class-properties │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-syntax-class-static-block │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-syntax-dynamic-import │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-syntax-import-assertions │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-syntax-import-attributes │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-syntax-import-meta │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-syntax-json-strings │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-syntax-logical-assignment-operators │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-syntax-nullish-coalescing-operator │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-syntax-numeric-separator │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-syntax-optional-catch-binding │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-syntax-private-property-in-object │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-syntax-top-level-await │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-syntax-unicode-sets-regex │ ├── ✕ missing peer @babel/core@^7.0.0 │ └─┬ @babel/helper-create-regexp-features-plugin │ └── ✕ missing peer @babel/core@^7.0.0 ├─┬ @babel/plugin-transform-arrow-functions │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-async-generator-functions │ ├── ✕ missing peer @babel/core@^7.0.0-0 │ └─┬ @babel/helper-remap-async-to-generator │ └── ✕ missing peer @babel/core@^7.0.0 ├─┬ @babel/plugin-transform-async-to-generator │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-block-scoped-functions │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-block-scoping │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-class-properties │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-class-static-block │ └── ✕ missing peer @babel/core@^7.12.0 ├─┬ @babel/plugin-transform-classes │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-computed-properties │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-destructuring │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-dotall-regex │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-duplicate-keys │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-dynamic-import │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-exponentiation-operator │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-export-namespace-from │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-for-of │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-function-name │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-json-strings │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-literals │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-logical-assignment-operators │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-member-expression-literals │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-modules-amd │ ├── ✕ missing peer @babel/core@^7.0.0-0 │ └─┬ @babel/helper-module-transforms │ └── ✕ missing peer @babel/core@^7.0.0 ├─┬ @babel/plugin-transform-modules-commonjs │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-modules-systemjs │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-modules-umd │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-named-capturing-groups-regex │ └── ✕ missing peer @babel/core@^7.0.0 ├─┬ @babel/plugin-transform-new-target │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-nullish-coalescing-operator │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-numeric-separator │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-object-rest-spread │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-object-super │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-optional-catch-binding │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-private-methods │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-private-property-in-object │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-property-literals │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-regenerator │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-reserved-words │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-shorthand-properties │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-spread │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-sticky-regex │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-template-literals │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-typeof-symbol │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-unicode-escapes │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-unicode-property-regex │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-unicode-regex │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ @babel/plugin-transform-unicode-sets-regex │ └── ✕ missing peer @babel/core@^7.0.0 ├─┬ @babel/preset-modules │ ├── ✕ missing peer @babel/core@^7.0.0-0 │ └─┬ @babel/plugin-proposal-unicode-property-regex │ └── ✕ missing peer @babel/core@^7.0.0-0 ├─┬ babel-plugin-polyfill-corejs2 │ ├── ✕ missing peer @babel/core@^7.0.0-0 │ └─┬ @babel/helper-define-polyfill-provider │ └── ✕ missing peer @babel/core@^7.4.0-0 ├─┬ babel-plugin-polyfill-corejs3 │ └── ✕ missing peer @babel/core@^7.0.0-0 └─┬ babel-plugin-polyfill-regenerator └── ✕ missing peer @babel/core@^7.0.0-0 Peer dependencies that should be installed: @babel/core@">=7.13.0 <8.0.0" apps/lifeline ├─┬ @graphql-codegen/typescript-urql │ └── ✕ missing peer graphql-tag@^2.0.0 ├─┬ babel-loader │ └── ✕ missing peer webpack@>=5 ├─┬ @urql/storage-rn │ └── ✕ missing peer @urql/exchange-graphcache@>=5.0.0 ├─┬ expo-router │ ├── ✕ missing peer metro@~0.76.7 │ └─┬ expo-splash-screen │ └─┬ @expo/prebuild-config │ └── ✕ missing peer expo-modules-autolinking@>=0.8.1 ├─┬ react-native │ └─┬ @react-native/codegen │ ├── ✕ missing peer @babel/preset-env@^7.1.6 │ └─┬ jscodeshift │ └── ✕ missing peer @babel/preset-env@^7.1.6 ├─┬ react-native-health-connect │ └── ✕ missing peer @expo/config-plugins@">= 6.0.2" └─┬ react-native-reanimated ├── ✕ missing peer @babel/plugin-proposal-nullish-coalescing-operator@^7.0.0-0 ├── ✕ missing peer @babel/plugin-proposal-optional-chaining@^7.0.0-0 ├── ✕ missing peer @babel/plugin-transform-arrow-functions@^7.0.0-0 ├── ✕ missing peer @babel/plugin-transform-shorthand-properties@^7.0.0-0 └── ✕ missing peer @babel/plugin-transform-template-literals@^7.0.0-0 Peer dependencies that should be installed: @babel/plugin-proposal-nullish-coalescing-operator@^7.0.0-0 @babel/plugin-proposal-optional-chaining@^7.0.0-0 @babel/plugin-transform-arrow-functions@^7.0.0-0 @babel/plugin-transform-shorthand-properties@^7.0.0-0 @babel/plugin-transform-template-literals@^7.0.0-0 @babel/preset-env@">=7.1.6 <8.0.0" @expo/config-plugins@">= 6.0.2" @urql/exchange-graphcache@>=5.0.0 expo-modules-autolinking@>=0.8.1 graphql-tag@^2.0.0 metro@~0.76.7 webpack@>=5 packages/ui ├─┬ @graphql-codegen/cli │ ├── ✕ missing peer graphql@"^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" │ ├─┬ @graphql-codegen/core │ │ ├── ✕ missing peer graphql@"^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" │ │ ├─┬ @graphql-codegen/plugin-helpers │ │ │ ├── ✕ missing peer graphql@"^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" │ │ │ └─┬ @graphql-tools/utils │ │ │ ├── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ │ └─┬ @graphql-typed-document-node/core │ │ │ └── ✕ missing peer graphql@"^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ └─┬ @graphql-tools/schema │ │ ├── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ └─┬ @graphql-tools/merge │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ ├─┬ @graphql-tools/apollo-engine-loader │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ ├─┬ @graphql-tools/code-file-loader │ │ ├── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ └─┬ @graphql-tools/graphql-tag-pluck │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ ├─┬ @graphql-tools/git-loader │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ ├─┬ @graphql-tools/github-loader │ │ ├── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ └─┬ @graphql-tools/executor-http │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ ├─┬ @graphql-tools/graphql-file-loader │ │ ├── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ └─┬ @graphql-tools/import │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ ├─┬ @graphql-tools/json-file-loader │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ ├─┬ @graphql-tools/load │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ ├─┬ @graphql-tools/prisma-loader │ │ ├── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ ├─┬ @graphql-tools/url-loader │ │ │ ├── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ │ ├─┬ @graphql-tools/delegate │ │ │ │ ├── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ │ │ ├─┬ @graphql-tools/batch-execute │ │ │ │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ │ │ └─┬ @graphql-tools/executor │ │ │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ │ ├─┬ @graphql-tools/executor-graphql-ws │ │ │ │ ├── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ │ │ └─┬ graphql-ws │ │ │ │ └── ✕ missing peer graphql@">=0.11 <=16" │ │ │ ├─┬ @graphql-tools/executor-legacy-ws │ │ │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ │ └─┬ @graphql-tools/wrap │ │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ └─┬ graphql-request │ │ └── ✕ missing peer graphql@"14 - 16" │ └─┬ graphql-config │ └── ✕ missing peer graphql@"^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" ├─┬ @graphql-codegen/near-operation-file-preset │ ├── ✕ missing peer graphql@"^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" │ ├─┬ @graphql-codegen/add │ │ ├── ✕ missing peer graphql@"^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" │ │ └─┬ @graphql-codegen/plugin-helpers │ │ ├── ✕ missing peer graphql@"^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" │ │ └─┬ @graphql-tools/utils │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ ├─┬ @graphql-codegen/plugin-helpers │ │ ├── ✕ missing peer graphql@"^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" │ │ └─┬ @graphql-tools/utils │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ └─┬ @graphql-codegen/visitor-plugin-common │ ├── ✕ missing peer graphql@"^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" │ ├─┬ @graphql-tools/optimize │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ ├─┬ @graphql-tools/relay-operation-optimizer │ │ ├── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ └─┬ @ardatan/relay-compiler │ │ └── ✕ missing peer graphql@"*" │ └─┬ graphql-tag │ └── ✕ missing peer graphql@"^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" ├─┬ @graphql-codegen/typescript-operations │ ├── ✕ missing peer graphql@"^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" │ └─┬ @graphql-codegen/typescript │ ├── ✕ missing peer graphql@"^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" │ ├─┬ @graphql-codegen/schema-ast │ │ └── ✕ missing peer graphql@"^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" │ └─┬ @graphql-codegen/visitor-plugin-common │ ├── ✕ missing peer graphql@"^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" │ ├─┬ @graphql-tools/optimize │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ └─┬ @graphql-tools/relay-operation-optimizer │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" ├─┬ @graphql-codegen/typescript-urql │ ├── ✕ missing peer graphql@"^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" │ └── ✕ missing peer graphql-tag@^2.0.0 ├─┬ @graphql-eslint/eslint-plugin │ ├── ✕ missing peer graphql@"^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" │ ├─┬ @graphql-tools/code-file-loader │ │ ├── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ └─┬ @graphql-tools/graphql-tag-pluck │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ ├─┬ graphql-config │ │ ├── ✕ missing peer graphql@"^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" │ │ ├─┬ @graphql-tools/graphql-file-loader │ │ │ ├── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ │ └─┬ @graphql-tools/import │ │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ ├─┬ @graphql-tools/json-file-loader │ │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ ├─┬ @graphql-tools/load │ │ │ ├── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ │ └─┬ @graphql-tools/schema │ │ │ ├── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ │ └─┬ @graphql-tools/merge │ │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ └─┬ @graphql-tools/url-loader │ │ ├── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ ├─┬ @graphql-tools/delegate │ │ │ ├── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ │ ├─┬ @graphql-tools/batch-execute │ │ │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ │ └─┬ @graphql-tools/executor │ │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ ├─┬ @graphql-tools/executor-http │ │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ ├─┬ @graphql-tools/executor-graphql-ws │ │ │ ├── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ │ └─┬ graphql-ws │ │ │ └── ✕ missing peer graphql@">=0.11 <=16" │ │ ├─┬ @graphql-tools/executor-legacy-ws │ │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ │ └─┬ @graphql-tools/wrap │ │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" │ └─┬ graphql-depth-limit │ └── ✕ missing peer graphql@"*" ├─┬ eslint-config-kingstinct │ └── ✕ missing peer graphql@>=16 ├─┬ @kingstinct/react │ └─┬ urql │ └─┬ @urql/core │ └─┬ @0no-co/graphql.web │ └── ✕ missing peer graphql@"^14.0.0 || ^15.0.0 || ^16.0.0" ├─┬ @storybook/addon-essentials │ ├── ✕ missing peer webpack@"*" │ └─┬ @storybook/addon-docs │ ├─┬ babel-loader │ │ └── ✕ missing peer webpack@>=2 │ └─┬ @mdx-js/react │ └── ✕ unmet peer react@"^16.13.1 || ^17.0.0": found 18.2.0 ├─┬ @storybook/react-native │ └─┬ @storybook/core-client │ └── ✕ missing peer webpack@"*" ├─┬ babel-loader │ └── ✕ missing peer webpack@>=5 ├─┬ @storybook/addon-ondevice-controls │ └─┬ @emotion/native │ └─┬ @emotion/primitives-core │ └── ✕ missing peer @emotion/core@^10.0.27 ├─┬ @storybook/addon-react-native-web │ ├── ✕ missing peer @babel/preset-react@"*" │ ├── ✕ missing peer babel-plugin-react-native-web@"*" │ └── ✕ missing peer metro-react-native-babel-preset@"*" ├─┬ @storybook/react │ ├── ✕ missing peer require-from-string@^2.0.2 │ └─┬ react-element-to-jsx-string │ ├── ✕ unmet peer react@"^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1": found 18.2.0 │ └── ✕ unmet peer react-dom@"^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1": found 18.2.0 ├─┬ react-native │ └─┬ @react-native/codegen │ ├── ✕ missing peer @babel/preset-env@^7.1.6 │ └─┬ jscodeshift │ └── ✕ missing peer @babel/preset-env@^7.1.6 ├─┬ react-native-reanimated │ ├── ✕ missing peer @babel/plugin-proposal-nullish-coalescing-operator@^7.0.0-0 │ ├── ✕ missing peer @babel/plugin-proposal-optional-chaining@^7.0.0-0 │ ├── ✕ missing peer @babel/plugin-transform-arrow-functions@^7.0.0-0 │ ├── ✕ missing peer @babel/plugin-transform-shorthand-properties@^7.0.0-0 │ └── ✕ missing peer @babel/plugin-transform-template-literals@^7.0.0-0 └─┬ @storybook/addon-actions └─┬ react-inspector └── ✕ unmet peer react@"^16.8.4 || ^17.0.0": found 18.2.0 Peer dependencies that should be installed: @babel/plugin-proposal-nullish-coalescing-operator@^7.0.0-0 @babel/plugin-proposal-optional-chaining@^7.0.0-0 @babel/plugin-transform-arrow-functions@^7.0.0-0 @babel/plugin-transform-shorthand-properties@^7.0.0-0 @babel/plugin-transform-template-literals@^7.0.0-0 @babel/preset-env@">=7.1.6 <8.0.0" @babel/preset-react@"*" @emotion/core@^10.0.27 babel-plugin-react-native-web@"*" graphql-tag@^2.0.0 graphql@">=16.0.0 <17.0.0" metro-react-native-babel-preset@"*" require-from-string@^2.0.2 webpack@>=5.0.0 pnpm exited with non-zero code: 1 ```

Reproducible demo or steps to reproduce from a blank project

  1. Set up a fresh Expo 49 project
  2. Switch to use pnpm (run pnpm import)
  3. Add .npmrc with shamefully-hoist=true
  4. Add config.resolver.unstable_enableSymlinks = true to metro.config.js
  5. Run pnpm install
  6. Trigger an EAS build for Android (in the cloud)
szdziedzic commented 1 year ago

Hi,

You can go to Spin up build environment phase logs to see description of a builder environment and currently installed software. In this case (for Android), the pnpm version is 7.0.0.

We can make the pnpm version more configurable by adding the option to control its version to eas.json (same as for yarn, sounds like a good idea 👍

You can currently install a different version of pnpm using our pre-install hook (just use npm install -g pnpm@version command as a hook command), so it is doable at the moment.

Could you give it a try and let me know if it fixed the issue for you?

LukyLurks commented 1 year ago

You can go to Spin up build environment phase logs to see description of a builder environment and currently installed software. In this case (for Android), the pnpm version is 7.0.0.

For my iOS builds (which succeed) it's 8.6.5.

You can currently install a different version of pnpm using our pre-install hook (just use npm install -g pnpm@version command as a hook command), so it is doable at the moment.

Could you give it a try and let me know if it fixed the issue for you?

I did just that and it fixed it for me, thank you for the suggestion.

robertherber commented 1 year ago

@szdziedzic Thanks for the pre-install suggestion, works for me 👍

An even better way to specify version it with the packageManager property in package.json (although I know it’s still experimental). It’s nice to just have to update these things in one place.

mozzius commented 1 year ago

If it helps anyone, I ran into an issue where it was trying to install pnpm when running a local build, which was failing since I already have it installed via a different method. My solution was to set "eas-build-pre-install" to "./scripts/pre-install.sh", and adding the following bash script:

/scripts/pre-install.sh

#!/bin/bash

if [[ "$EAS_BUILD_RUNNER" == "eas-build" ]]; then
    npm install -g pnpm@8.7.5
fi
alexandernanberg commented 1 year ago

I also ran into this issue. An alternative solution is to use Corepack

// package.json
{
  // ...
  "packageManager": "pnpm@8.9.2",
  "scripts": {
    "eas-build-pre-install": "corepack enable",
    // ...
  }

Would be nice if this was supported out-of-the-box without having to manually call corepack enable

ycfreeman commented 1 year ago

is there any reason why eas is running

pnpm install --no-frozen-lockfile

?

i suspect this maybe causing issue in our android build

i tried to use eas to submit an android build and the build crashes

but i tried to run the same build locally - just changed build number - and the build works