eas-cli
eas-cli copied to clipboard
EAS Build fails to detect lock file and local monorepo packages in pnpm workspace
Build/Submit details page URL
https://expo.dev/accounts/athex/projects/encrypChat/builds/c1f4a811-d560-4928-97fa-e866d436fe5e
Summary
I’m using a modular monorepo setup with pnpm, Biome, and Turborepo, where my Expo app is located at apps/mobile. When I run EAS Build from apps/mobile, I get errors stating that the lock file and package registry cannot be found, even though I’m using local packages within the monorepo.
Managed or bare?
Bare
Environment
athexweb3@MacBook-Air mobile % pnpm dlx expo-env-info
Packages: +2
++
Progress: resolved 2, reused 0, downloaded 2, added 2, done
expo-env-info 2.0.7 environment info:
System:
OS: macOS 26.0.1
Shell: 5.9 - /bin/zsh
Binaries:
Node: 24.10.0 - /opt/homebrew/bin/node
npm: 11.6.0 - /opt/homebrew/bin/npm
Watchman: 2025.10.13.00 - /opt/homebrew/bin/watchman
Managers:
CocoaPods: 1.16.2 - /opt/homebrew/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 25.0, iOS 26.0, macOS 26.0, tvOS 26.0, visionOS 26.0, watchOS 26.0
IDEs:
Android Studio: 2025.1 AI-251.27812.49.2514.14217341
Xcode: 26.0.1/17A400 - /usr/bin/xcodebuild
npmGlobalPackages:
eas-cli: 16.26.0
Expo Workflow: bare
athexweb3@MacBook-Air mobile % pnpm dlx expo-doctor
env: load .env
env: export PORT EXPO_PUBLIC_GITHUB_CLIENT_ID EXPO_PUBLIC_GITHUB_CLIENT_SECRET EXPO_PUBLIC_GOOGLE_CLIENT_ID EXPO_PUBLIC_GOOGLE_CLIENT_SECRET
12/17 checks passed. 5 checks failed. Possible issues detected:
Use the --verbose flag to see more details about passed checks.
✖ Check for issues with Metro config
- "watchFolders" does not contain all entries from Expo's defaults
- "resolver.disableHierarchicalLookup" mismatch. Expected false, got: true
Advice:
Modifying the "metro.config.js" is dangerous and may lead to unintended consequences.
Unless you know what these overrides do, remove them and adopt the recommended values from "expo/metro-config".
✖ Check dependencies for packages that should not be installed directly
The package "expo-modules-core" should not be installed directly in your project. You should instead use the exported API from the expo package.
Advice:
Remove these packages from your package.json.
✖ Check that required peer dependencies are installed
Missing peer dependency: react-native-gesture-handler
Required by: @encrypchat/ui-kit
Missing peer dependency: expo-blur
Required by: @encrypchat/ui-kit
Missing peer dependency: expo-linear-gradient
Required by: @encrypchat/ui-kit
Missing peer dependency: expo-haptics
Required by: @encrypchat/ui-kit
Advice:
Install missing required peer dependencies with "npx expo install react-native-gesture-handler expo-blur expo-linear-gradient expo-haptics"
Your app may crash outside of Expo Go without these dependencies. Native module peer dependencies must be installed directly.
✖ Check that no duplicate dependencies are installed
Your project contains duplicate native module dependencies, which should be de-duplicated.
Native builds may only contain one version of any given native module, and having multiple versions of a single Native module installed may lead to unexpected build errors.
Found duplicates for expo:
├─ [email protected] (at: ../../node_modules/expo)
├─ [email protected] (at: ../../node_modules/expo-asset/node_modules/expo)
├─ [email protected] (at: ../../node_modules/expo-file-system/node_modules/expo)
├─ [email protected] (at: ../../node_modules/expo-font/node_modules/expo)
├─ [email protected] (at: ../../node_modules/expo-keep-awake/node_modules/expo)
└─ [email protected] (at: ../../node_modules/@expo/metro-runtime/node_modules/expo)
Found duplicates for expo-modules-core:
├─ [email protected] (at: ../../node_modules/expo-modules-core)
├─ [email protected] (at: ../../node_modules/expo-asset/node_modules/expo-modules-core)
├─ [email protected] (at: ../../node_modules/expo-file-system/node_modules/expo-modules-core)
├─ [email protected] (at: ../../node_modules/expo-font/node_modules/expo-modules-core)
├─ [email protected] (at: ../../node_modules/expo-keep-awake/node_modules/expo-modules-core)
└─ [email protected] (at: ../../node_modules/@expo/metro-runtime/node_modules/expo-modules-core)
Found duplicates for expo-web-browser:
├─ [email protected] (at: node_modules/expo-web-browser)
└─ [email protected] (at: ../../node_modules/expo-web-browser)
Found duplicates for react-native-worklets:
├─ [email protected] (at: ../../node_modules/react-native-worklets)
└─ [email protected] (at: ../../node_modules/react-native-reanimated/node_modules/react-native-worklets)
Found duplicates for @expo/fingerprint:
├─ @expo/[email protected] (at: ../../node_modules/@expo/fingerprint)
├─ @expo/[email protected] (at: ../../node_modules/expo-asset/node_modules/@expo/fingerprint)
├─ @expo/[email protected] (at: ../../node_modules/expo-file-system/node_modules/@expo/fingerprint)
├─ @expo/[email protected] (at: ../../node_modules/expo-font/node_modules/@expo/fingerprint)
├─ @expo/[email protected] (at: ../../node_modules/expo-keep-awake/node_modules/@expo/fingerprint)
└─ @expo/[email protected] (at: ../../node_modules/@expo/metro-runtime/node_modules/@expo/fingerprint)
Advice:
Your node_modules folder may be corrupted. Multiple copies of the same version exist for: react-native-worklets.
- Try deleting your node_modules folders and reinstall your dependencies after.
- If this error persists, delete your node_modules as well as your lockfile and reinstall.
Resolve your dependency issues and deduplicate your dependencies. Learn more: https://expo.fyi/resolving-dependency-issues
✖ Check that packages match versions required by installed Expo SDK
🔧 Patch version mismatches
package expected found
@react-navigation/native ^7.1.8 7.1.19
1 package out of date.
Advice:
Use 'npx expo install --check' to review and upgrade your dependencies.
To ignore specific packages, add them to "expo.install.exclude" in package.json. Learn more: https://expo.fyi/dependency-validation
5 checks failed, indicating possible issues with the project.
athexweb3@MacBook-Air mobile %
Error output
Running "yarn install --frozen-lockfile" in /home/expo/workingdir/build directory
yarn install v1.22.22
info No lockfile found.
[1/4] Resolving packages...
error Error: https://registry.yarnpkg.com/@encrypchat%2fcore: Not found
at params.callback [as _callback] (/home/expo/.nvm/versions/node/v20.19.2/lib/node_modules/yarn/lib/cli.js:66680:18)
at self.callback (/home/expo/.nvm/versions/node/v20.19.2/lib/node_modules/yarn/lib/cli.js:141410:22)
at Request.emit (node:events:524:28)
at Request.<anonymous> (/home/expo/.nvm/versions/node/v20.19.2/lib/node_modules/yarn/lib/cli.js:142382:10)
at Request.emit (node:events:524:28)
at IncomingMessage.<anonymous> (/home/expo/.nvm/versions/node/v20.19.2/lib/node_modules/yarn/lib/cli.js:142304:12)
at Object.onceWrapper (node:events:638:28)
at IncomingMessage.emit (node:events:536:35)
at endReadableNT (node:internal/streams/readable:1698:12)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
Reproducible demo or steps to reproduce from a blank project
Steps to Reproduce
- Create a blank monorepo:
mkdir my-monorepo && cd my-monorepo
pnpm init -y
pnpm add -w turbo
- Setup workspace layout in
pnpm-workspace.yaml:
packages:
- 'apps/*'
- 'packages/*'
- Create Expo app inside
apps/mobile:
pnpm dlx create-expo-app apps/mobile
- Add a local package in
packages/ui:
mkdir packages/ui
cd packages/ui
pnpm init -y
- Reference local package in mobile app:
// apps/mobile/package.json
"dependencies": {
"ui": "workspace:*"
}
- Run EAS Build from
apps/mobile:
cd apps/mobile
eas build --platform ios
- Expected: Build succeeds using local packages.
- Actual: Errors like
lock file not foundandpackage registry not found.