eas-cli icon indicating copy to clipboard operation
eas-cli copied to clipboard

EAS Build fails to detect lock file and local monorepo packages in pnpm workspace

Open athexweb3 opened this issue 2 months ago • 1 comments

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

  1. Create a blank monorepo:
mkdir my-monorepo && cd my-monorepo
pnpm init -y
pnpm add -w turbo
  1. Setup workspace layout in pnpm-workspace.yaml:
packages:
  - 'apps/*'
  - 'packages/*'
  1. Create Expo app inside apps/mobile:
pnpm dlx create-expo-app apps/mobile
  1. Add a local package in packages/ui:
mkdir packages/ui
cd packages/ui
pnpm init -y
  1. Reference local package in mobile app:
// apps/mobile/package.json
"dependencies": {
  "ui": "workspace:*"
}
  1. Run EAS Build from apps/mobile:
cd apps/mobile
eas build --platform ios
  1. Expected: Build succeeds using local packages.
  2. Actual: Errors like lock file not found and package registry not found.

athexweb3 avatar Nov 04 '25 08:11 athexweb3