expo: EAS Build: Failed to parse or read package.json

Summary

Eas build of custom development client triggers Failed to parse or read package.json: package.json does not exist in /Users/expo/workingdir/build/app.

Local running of npm start works fine (in old build of dev client).

Project structure:

/
  / app /
     / src / 
    package.json
    eas.json
    app.config.js
  / backend /

image

Managed or bare workflow? If you have ios/ or android/ directories in your project, the answer is bare!

managed

What platform(s) does this occur on?

iOS

SDK Version (managed workflow only)

44

Environment

expo-env-info 1.0.2 environment info:
    System:
      OS: macOS 12.2.1
      Shell: 5.8 - /bin/zsh
    Binaries:
      Node: 16.14.0 - ~/.nvm/versions/node/v16.14.0/bin/node
      Yarn: 1.22.17 - ~/.nvm/versions/node/v16.14.0/bin/yarn
      npm: 8.3.1 - ~/.nvm/versions/node/v16.14.0/bin/npm
      Watchman: 2022.03.21.00 - /opt/homebrew/bin/watchman
    Managers:
      CocoaPods: 1.11.3 - /opt/homebrew/bin/pod
    SDKs:
      iOS SDK:
        Platforms: DriverKit 21.4, iOS 15.4, macOS 12.3, tvOS 15.4, watchOS 8.5
    IDEs:
      Android Studio: 2021.1 AI-211.7628.21.2111.8139111
      Xcode: 13.3/13E113 - /usr/bin/xcodebuild
    npmPackages:
      expo: ~44.0.0 => 44.0.6
      react: 17.0.1 => 17.0.1
      react-dom: 17.0.1 => 17.0.1
      react-native: 0.64.3 => 0.64.3
      react-native-web: 0.17.1 => 0.17.1
    npmGlobalPackages:
      eas-cli: 0.48.2
      expo-cli: 5.3.0
    Expo Workflow: bare

Reproducible demo

N/A.

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 16 (15 by maintainers)

Most upvoted comments

Ok so update: it was the .gitignore file. Is there any documentation on this behaviour?

My default development flow is to .gitignore all files that are potentially compromising (*.{json,key,plist}) and to force-commit those that are ok.

It makesnosensetome.gif that eas would rely on the .gitignore to determine what files are uploaded to the build service. Especially since for example it is a common practice to:

  1. .gitignore secrets like google-services.json
  2. Write ${{ secrets.google }} to google-services.json in the CI environment
  3. Run a build command