Expo Upgrade to 39.0.0 fails silently

I am trying to upgrade Expo in order to build for Android with build target of 29 instead of 28. When I run Expo Upgrade, it falls over during clearing the packager cache. After this process, Expo will no longer run on my machine.

Please see the terminal output below (OS X).

┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                                                                                                          │
│   There is a new version of expo-cli available (3.28.5).                                                                                 │
│   You are currently using expo-cli 3.13.1                                                                                                │
│   Install expo-cli globally using the package manager of your choice; for example: `npm install -g expo-cli` to get the latest version   │
│                                                                                                                                          │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Your git working tree is clean
To revert the changes after this command completes, you can run the following:
  git clean --force && git reset --hard

We found an existing expo-cli instance running for this project and closed it to continue.

? You are currently using SDK 37.0.0. Would you like to update to the latest version, 39.0.0? Yes

? You might have to upgrade your iOS simulator. Before you can do that, you have to run the simulator. Do you want to upgrade it now? No

? You might have to upgrade your Android client. Before you can do that, you have to run the emulator, or plug a device in. Do you want to upgrade it now? No

Installing the expo package...

> yarn add expo@^39.0.0
yarn add v1.22.1
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...


success Saved lockfile.
success Saved 40 new dependencies.
info Direct dependencies
└─ expo@39.0.4
info All dependencies
├─ @expo/configure-splash-screen@0.2.0
├─ at-least-node@1.0.0
├─ available-typed-arrays@1.0.2
├─ babel-plugin-react-native-web@0.13.18
├─ babel-preset-expo@8.3.0
├─ deep-equal@2.0.4
├─ es-get-iterator@1.1.1
├─ expo-asset@8.2.0
├─ expo-error-recovery@1.3.0
├─ expo-file-system@9.2.0
├─ expo-font@8.3.0
├─ expo-keep-awake@8.3.0
├─ expo-linear-gradient@8.3.1
├─ expo-linking@1.0.5
├─ expo-splash-screen@0.6.2
├─ expo-sqlite@8.4.0
├─ expo@39.0.4
├─ get-intrinsic@1.0.1
├─ is-bigint@1.0.0
├─ is-negative-zero@2.0.0
├─ is-typed-array@1.1.3
├─ is-weakmap@2.0.1
├─ is-weakset@2.0.1
├─ regexp.prototype.flags@1.3.0
├─ side-channel@1.0.3
├─ unimodules-app-loader@1.3.0
├─ unimodules-barcode-scanner-interface@5.3.0
├─ unimodules-camera-interface@5.3.0
├─ unimodules-constants-interface@5.3.0
├─ unimodules-face-detector-interface@5.3.0
├─ unimodules-file-system-interface@5.3.0
├─ unimodules-font-interface@5.3.0
├─ unimodules-image-loader-interface@5.3.0
├─ unimodules-permissions-interface@5.3.0
├─ unimodules-sensors-interface@5.3.0
├─ unimodules-task-manager-interface@5.3.0
├─ which-boxed-primitive@1.0.1
├─ which-collection@1.0.1
├─ which-typed-array@1.1.2
└─ xml-js@1.6.11
✨  Done in 32.58s.

Updating sdkVersion in app.json...
Updating packages to compatible versions (where known)...

> yarn add --dev jest-expo@^39.0.0
yarn add v1.22.1
[1/4] 🔍  Resolving packages...



success Saved lockfile.
success Saved 77 new dependencies.
info Direct dependencies
└─ jest-expo@39.0.0
info All dependencies
├─ @babel/plugin-syntax-import-meta@7.10.4
├─ @babel/plugin-syntax-logical-assignment-operators@7.10.4
├─ @expo/babel-preset-cli@0.2.18
├─ @expo/config-types@40.0.0-beta.1
├─ @expo/config@3.3.15
├─ @expo/image-utils@0.3.7
├─ @expo/json-file@8.2.24
├─ @expo/plist@0.0.10
├─ @expo/spawn-async@1.5.0
├─ @jest/globals@25.5.2
├─ @jimp/bmp@0.9.8
├─ @jimp/core@0.9.8
├─ @jimp/custom@0.9.8
├─ @jimp/gif@0.9.8
├─ @jimp/jpeg@0.9.8
├─ @jimp/plugin-blit@0.9.8
├─ @jimp/plugin-blur@0.9.8
├─ @jimp/plugin-circle@0.9.8
├─ @jimp/plugin-color@0.9.8
├─ @jimp/plugin-contain@0.9.8
├─ @jimp/plugin-cover@0.9.8
├─ @jimp/plugin-crop@0.9.8
├─ @jimp/plugin-displace@0.9.8
├─ @jimp/plugin-dither@0.9.8
├─ @jimp/plugin-fisheye@0.9.8
├─ @jimp/plugin-flip@0.9.8
├─ @jimp/plugin-gaussian@0.9.8
├─ @jimp/plugin-invert@0.9.8
├─ @jimp/plugin-mask@0.9.8
├─ @jimp/plugin-normalize@0.9.8
├─ @jimp/plugin-print@0.9.8
├─ @jimp/plugin-resize@0.9.8
├─ @jimp/plugin-rotate@0.9.8
├─ @jimp/plugin-scale@0.9.8
├─ @jimp/plugin-shadow@0.9.8
├─ @jimp/plugin-threshold@0.9.8
├─ @jimp/plugins@0.9.8
├─ @jimp/png@0.9.8
├─ @jimp/tiff@0.9.8
├─ @jimp/types@0.9.8
├─ @types/graceful-fs@4.1.4
├─ @types/normalize-package-data@2.4.0
├─ any-base@1.1.0
├─ babel-preset-current-node-syntax@0.1.4
├─ bmp-js@0.1.0
├─ buffer-equal@0.0.1
├─ crypto-random-string@1.0.0
├─ dom-walk@0.1.2
├─ exif-parser@0.1.12
├─ file-type@9.0.0
├─ getenv@0.7.0
├─ global@4.3.2
├─ is-core-module@2.1.0
├─ is-function@1.0.2
├─ jest-expo@39.0.0
├─ jest-watch-select-projects@2.0.0
├─ jest-watch-typeahead@0.5.0
├─ jimp@0.9.8
├─ jpeg-js@0.3.7
├─ load-bmfont@1.4.1
├─ min-document@2.19.0
├─ omggif@1.0.10
├─ pako@1.0.11
├─ parse-bmfont-ascii@1.0.6
├─ parse-bmfont-binary@1.0.6
├─ parse-bmfont-xml@1.1.4
├─ parse-headers@2.0.3
├─ parse-png@2.1.0
├─ pixelmatch@4.0.2
├─ process@0.5.2
├─ require-from-string@2.0.2
├─ temp-dir@1.0.0
├─ tempy@0.3.0
├─ unique-string@1.0.0
├─ utif@2.0.1
├─ xhr@2.5.0
└─ xml-parse-from-string@1.0.1
✨  Done in 30.55s.
> yarn add @react-native-community/netinfo@5.9.6 @unimodules/core@~5.5.1 @unimodules/react-native-adapter@~5.6.0 expo-app-auth@~9.2.0 expo-brightness@~8.3.0 expo-camera@~9.0.0 expo-image-manipulator@~8.3.0 expo-image-picker@~9.1.1 expo-local-authentication@~9.3.0 expo-media-library@~9.2.1 expo-secure-store@~9.2.0 lottie-react-native@~2.6.1 react-native-gesture-handler@~1.7.0 react-native-maps@0.27.1 react-native-reanimated@~1.13.0 react-native-screens@~2.10.1 react-native-svg@12.1.0 react-native-view-shot@3.1.2 react-native-webview@10.7.0 react-native-safe-area-context@3.1.4 @react-native-community/datetimepicker@3.0.0 @react-native-community/masked-view@0.1.10 react-native@https://github.com/expo/react-native/archive/sdk-39.0.3.tar.gz react@16.13.1 react-dom@16.13.1
yarn add v1.22.1
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 🔨  Building fresh packages...
success Saved lockfile.
success Saved 49 new dependencies.
info Direct dependencies
├─ @react-native-community/datetimepicker@3.0.0
├─ @react-native-community/masked-view@0.1.10
├─ @react-native-community/netinfo@5.9.6
├─ expo-app-auth@9.2.0
├─ expo-brightness@8.3.0
├─ expo-camera@9.0.0
├─ expo-image-manipulator@8.3.0
├─ expo-image-picker@9.1.1
├─ expo-local-authentication@9.3.0
├─ expo-media-library@9.2.1
├─ expo-secure-store@9.2.0
├─ react-dom@16.13.1
├─ react-native-gesture-handler@1.7.0
├─ react-native-maps@0.27.1
├─ react-native-reanimated@1.13.1
├─ react-native-screens@2.10.1
├─ react-native-svg@12.1.0
├─ react-native-webview@10.7.0
├─ react-native@0.63.2
└─ react@16.13.1
info All dependencies
├─ @koale/useworker@3.2.1
├─ @react-native-community/cli-hermes@4.13.0
├─ @react-native-community/cli-server-api@4.13.0
├─ @react-native-community/cli-types@4.10.1
├─ @react-native-community/cli@4.13.0
├─ @react-native-community/datetimepicker@3.0.0
├─ @react-native-community/masked-view@0.1.10
├─ @react-native-community/netinfo@5.9.6
├─ anser@1.4.10
├─ cli-spinners@2.5.0
├─ dequal@1.0.1
├─ envinfo@7.7.3
├─ expo-app-auth@9.2.0
├─ expo-brightness@8.3.0
├─ expo-camera@9.0.0
├─ expo-image-manipulator@8.3.0
├─ expo-image-picker@9.1.1
├─ expo-local-authentication@9.3.0
├─ expo-media-library@9.2.1
├─ expo-secure-store@9.2.0
├─ hermes-engine@0.5.1
├─ hermes-profile-transformer@0.0.6
├─ interpret@1.4.0
├─ ip@1.1.5
├─ mem@4.3.0
├─ metro-babel-register@0.59.0
├─ metro-config@0.58.0
├─ metro-inspector-proxy@0.58.0
├─ metro-minify-uglify@0.58.0
├─ metro-react-native-babel-transformer@0.59.0
├─ metro@0.58.0
├─ node-stream-zip@1.11.7
├─ ob1@0.58.0
├─ react-devtools-core@4.9.0
├─ react-dom@16.13.1
├─ react-native-gesture-handler@1.7.0
├─ react-native-maps@0.27.1
├─ react-native-reanimated@1.13.1
├─ react-native-screens@2.10.1
├─ react-native-svg@12.1.0
├─ react-native-webview@10.7.0
├─ react-native-windows@0.62.15
├─ react-native@0.63.2
├─ react@16.13.1
├─ rechoir@0.6.2
├─ shelljs@0.7.8
├─ use-subscription@1.5.0
├─ username@5.1.0
└─ xml-parser@1.2.1
✨  Done in 23.85s.

Clearing the packager cache...
Metro Bundler process exited with code 1
Set EXPO_DEBUG=true in your env to view the stack trace.```

Hey @quantjames, as the terminal logs indicate your cli version is well out-of-date. Can you please update and see if the problem persists?

Cheers,
Adam

Thanks @adamjnav

Thanks. I updated Expo CLI to the latest version. Same problem persists (upgrade doesn’t fail this time, but I still can’t start Expo):

Your git working tree is clean
To revert the changes after this command completes, you can run the following:
  git clean --force && git reset --hard

✔ You are currently using SDK 37.0.0. Would you like to update to the latest version, 39.0.0? … yes

✔ Would you like to upgrade the Expo app in the iOS simulator? … no

✔ Would you like to upgrade the Expo app in the Android emulator? … no

⠙ Installing the expo@^39.0.0 package...
✔ Installed expo@^39.0.0
✔ Removed deprecated sdkVersion field from app.json.
✔ No additional changes necessary to app.json config.
✔ Updated known packages to compatible versions.
✖ Failed to clear packager cache with error: Metro Bundler process exited with code 1
✔ Cleared packager cache.

👏 Automated upgrade steps complete.
...but this doesn't mean everything is done yet!

✅ The following packages were updated:
@react-native-community/netinfo, @unimodules/core, @unimodules/react-native-adapter, expo-app-auth, expo-brightness, expo-camera, expo-image-manipulator, expo-image-picker, expo-local-authentication, expo-media-library, expo-secure-store, lottie-react-native, react-native-gesture-handler, react-native-maps, react-native-reanimated, react-native-screens, react-native-svg, react-native-view-shot, react-native-webview, react-native-safe-area-context, @react-native-community/datetimepicker, @react-native-community/masked-view, jest-expo, react-native, react, react-dom, expo

🚨 The following packages were not updated. You should check the READMEs for those repositories to determine what version is compatible with your new set of packages:
@babel/preset-react, @react-native-community/cameraroll, aws-amplify, aws-amplify-react-native, aws-sdk, babel-plugin-styled-components, buffer, crc, enzyme, enzyme-adapter-react-16, enzyme-to-json, fetch-mock, jest, jest-fetch-mock, moment, prettier, prop-types, react-native-animated-loader, react-native-country-code-telephone-input, react-native-dialog, react-native-flash-message, react-native-material-dropdown, react-native-modal-datetime-picker, react-native-netinfo, react-native-qrcode-svg, react-native-star-rating, react-native-swiper, react-native-switch-selector, react-native-tableview-simple, react-navigation, react-navigation-stack, react-navigation-tabs, react-redux, redux, redux-logger, redux-mock-store, redux-promise, redux-promise-middleware, redux-promise-middleware-actions, redux-thunk, uuidv1, babel-core, babel-jest, husky, pretty-quick, react-test-renderer

Please refer to the release notes for information on any further required steps to update and information about breaking changes:
https://dev.to/expo/expo-sdk-39-is-now-available-1lm8

You should also look at the breaking changes from a release that you skipped:
- https://dev.to/expo/expo-sdk-38-is-now-available-5aa0

and then we try to start Expo:

Starting project at /blah/myapp
Expo DevTools is running at http://localhost:19002
Opening DevTools in the browser... (press shift-d to disable)
error: unknown option `--assetExts'

Metro Bundler process exited with code 1
Error: Metro Bundler process exited with code 1
    at ChildProcess.<anonymous> (/@expo/xdl@58.0.19/src/Project.ts:1596:16)
    at Object.onceWrapper (events.js:418:26)
    at ChildProcess.emit (events.js:311:20)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)```

Fixed according to: sdk 38 >>> error: unknown option `--assetExts'

1 Like