SDK 34: Ejecting from Managed workflow to Bare workflow throws error: "The Expo SDK requires Expo to run."

Hey everyone, this is my first post.

I have been working in the Managed workflow for a while, but now I want to add some native functionality (I.e. ApplePay) so I attempted to eject my project to a Bare project. I discovered that this is only available in SDK 34, (I was using SDK 32) so I went through the process of upgrading, including changing how my imports are done. I got my project ejected and pod install is throwing no errors, but when I do yarn ios I get the following error:

2019-09-19 09:21:48.990 [error][tid:com.facebook.react.JavaScript] The Expo SDK requires Expo to run. It appears the native Expo modules are unavailable and this code is not running on Expo. Visit https://docs.expo.io to learn more about developing an Expo project.

I am still able to use expo start to run the project in Expo, and I have tried starting with a new bare project (expo init with the “bare” option) and rebuilding the project from scratch, but with little luck.

Any suggestions are appreciated. Thanks.

Here is my package.json file, and I’m happy to provide anything else needed:

{
  "name": "espressd",
  "private": true,
  "scripts": {
    "start": "react-native start",
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "test": "node ./node_modules/jest/bin/jest.js --watchAll"
  },
  "jest": {
    "preset": "jest-expo"
  },
  "dependencies": {
    "expo": "^34.0.3",
    "react": "16.8.3",
    "react-dom": "16.8.3",
    "react-native": "0.59.10",
    "react-native-gesture-handler": "~1.3.0",
    "react-native-reanimated": "~1.1.0",
    "react-native-screens": "1.0.0-alpha.22",
    "react-native-unimodules": "~0.5.2",
    "react-native-web": "^0.11.4",
    "@expo/samples": "2.1.1",
    "@expo/vector-icons": "^10.0.0",
    "ajv": "^6.10.0",
    "expo-barcode-scanner": "~6.0.0",
    "expo-constants": "~6.0.0",
    "expo-font": "~6.0.1",
    "expo-image-manipulator": "~6.0.0",
    "expo-image-picker": "~6.0.0",
    "expo-local-authentication": "~6.0.0",
    "expo-location": "~6.0.0",
    "expo-permissions": "~6.0.0",
    "expo-react-native-adapter": "^2.0.0",
    "expo-secure-store": "~6.0.0",
    "expo-web-browser": "~6.0.0",
    "firebase": "^5.7.0",
    "install": "^0.12.2",
    "ngeohash": "^0.6.3",
    "npm": "^6.5.0",
    "path": "^0.12.7",
    "react-native-awesome-alerts": "^1.2.0",
    "react-native-dropdownalert": "^3.10.0",
    "react-native-elements": "^0.19.1",
    "react-native-flip-countdown-timer": "0.0.3",
    "react-native-ionicons": "^4.5.6",
    "react-native-maps": "~0.24.0",
    "react-native-modal-datetime-picker": "^7.5.0",
    "react-native-onboarding-animate": "^1.1.0",
    "react-native-progress-circle": "^2.0.1",
    "react-native-snap-carousel": "^3.7.5",
    "react-native-vector-icons": "^4.2.0",
    "react-navigation": "^3.11.0",
    "react-redux": "^6.0.0",
    "redux": "^4.0.1",
    "redux-thunk": "^2.3.0",
    "styled-components": "^4.1.2",
    "webpack": "^4.33.0"
  },
  "devDependencies": {
    "babel-plugin-module-resolver": "^3.2.0",
    "babel-preset-expo": "^5.0.0",
    "eslint-config-rallycoding": "^3.2.0",
    "jest-expo": "^34.0.0",
    "schedule": "^0.4.0"
  }
}

Also, if it’s helpful, here is my Podfile:

platform :ios, '10.0'

require_relative '../node_modules/react-native-unimodules/cocoapods'

target 'espressd' do
  # Pods for espressd
  pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'Core',
    'CxxBridge',
    'DevSupport',
    'RCTActionSheet',
    'RCTAnimation',
    'RCTBlob',
    'RCTGeolocation',
    'RCTImage',
    'RCTLinkingIOS',
    'RCTNetwork',
    'RCTSettings',
    'RCTText',
    'RCTVibration',
    'RCTWebSocket',
  ]

  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
  pod 'RNGestureHandler', :podspec => '../node_modules/react-native-gesture-handler/RNGestureHandler.podspec'
  pod 'RNReanimated', :podspec => '../node_modules/react-native-reanimated/RNReanimated.podspec'
  pod 'RNScreens', :path => '../node_modules/react-native-screens'

  use_unimodules!

end
1 Like

I’m getting the same - did you manage to find out what’s wrong?

you can’t import anywhere from the expo package itself. so look for from 'expo' somewhere in your code

edit: this is indeed a confusing error message though and it’s on my queue to look at improving this soon
another edit: packages like expo-camera will of course continue to work, it’s just things from the expo package itself like AppLoading and components that are currently tied to the managed workflow that you’ll need to remove

2 Likes

Thanks so much! I’ll give that a try.

Which components tied to the managed workflow need to be removed? Please provide examples of such components? I’ve been trying to resolve this vague error for days after ejecting to bare workflow. Have already removed the import statements from 'expo'

I am getting the same error after ejecting into bare workflow.