Upgrading to SDK 38 - Does not contain a valid Expo config

I am trying to upgrade from Expo SDK 37 to 38. I am getting this error message when running expo upgrade 38

➜ expo upgrade 38

Updating your app.json to account for breaking changes (if applicable)
Project at path ....../mobile does not contain a valid Expo config

Our Expo app is somewhat uniq in that we have two apps within it, and they each have their own app.json file, neither of which are at the root of the directory. Their respective paths are:

  • apps/goals/app.json
  • apps/perks/app.json

Based on some research, I tried running the following command and received the below error:

➜ expo upgrade 38 --config apps/goals/app.json

error: unknown option `--config'

What would the call be, using the expo-cli, to upgrade to Expo SDK 38, in this case? How can I tell expo to find the config files at these locations? I am primarily concerend with the apps/goals/app.json config and app.

Here are the results from my expo diagnostics call:

➜  expo diagnostics

  Expo CLI 3.28.5 environment info:
    System:
      OS: macOS 10.15.4
      Shell: 5.7.1 - /bin/zsh
    Binaries:
      Node: 14.4.0 - ~/.nvm/versions/node/v14.4.0/bin/node
      Yarn: 1.22.5 - /usr/local/bin/yarn
      npm: 6.14.5 - ~/.nvm/versions/node/v14.4.0/bin/npm
    SDKs:
      iOS SDK:
        Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
    IDEs:
      Xcode: 11.3/11C29 - /usr/bin/xcodebuild
    npmPackages:
      expo: ^38.0.0 => 38.0.10
      react: 16.9.0 => 16.9.0
      react-dom: 16.9.0 => 16.9.0
      react-native: https://github.com/expo/react-native/archive/sdk-37.0.0.tar.gz => 0.61.4
    npmGlobalPackages:
      expo-cli: 3.28.5
    Expo Workflow: managed

Thanks!

What I would try is move one app.js to the root directory and run the upgrade. Then move it back and move the other one to the root. Then run the upgrade again and move to back.

@wodin That works!

I created an issue in the associated expo-cli repo, and they agreed:

Thanks!

1 Like

Ah yes, I see app.json is not changed (except possibly for removing the SDK version, since it’s inferred from the package.json in recent versions.) I was thinking of package.json, which of course is modified during the upgrade.