3

I am migrating my managed Expo React Native project to the EAS build ecosystem and am getting a strange error that I dont see anywhere else when googling around.

The following error happens while running the Fastlane part of the build:

❌  (node_modules/expo-modules-core/ios/JSI/ExpoModulesProxySpec.mm:12:118)

10 | using PromiseInvocationBlock = void (^)(RCTPromiseResolveBlock resolveWrapper, RCTPromiseRejectBlock rejectWrapper);
11 | 
> 12 | static void callPromiseSetupWithBlock(jsi::Runtime &runtime, std::shared_ptr<CallInvoker> jsInvoker, std::shared_ptr<Promise> promise, PromiseInvocationBlock setupBlock)
    |                                                                                                                      ^ use of undeclared identifier 'Promise'
13 | {
14 |   auto weakResolveWrapper = CallbackWrapper::createWeak(promise->resolve_.getFunction(runtime), runtime, jsInvoker);
15 |   auto weakRejectWrapper = CallbackWrapper::createWeak(promise->reject_.getFunction(runtime), runtime, jsInvoker);
2543

❌  (node_modules/expo-modules-core/ios/JSI/ExpoModulesProxySpec.mm:14:29)

12 | static void callPromiseSetupWithBlock(jsi::Runtime &runtime, std::shared_ptr<CallInvoker> jsInvoker, std::shared_ptr<Promise> promise, PromiseInvocationBlock setupBlock)
13 | {
> 14 |   auto weakResolveWrapper = CallbackWrapper::createWeak(promise->resolve_.getFunction(runtime), runtime, jsInvoker);
    |                             ^ incomplete type 'facebook::react::CallbackWrapper' named in nested name specifier
15 |   auto weakRejectWrapper = CallbackWrapper::createWeak(promise->reject_.getFunction(runtime), runtime, jsInvoker);
16 | 
17 |   __block BOOL resolveWasCalled = NO;
2544

❌  (node_modules/expo-modules-core/ios/JSI/ExpoModulesProxySpec.mm:15:28)

13 | {
14 |   auto weakResolveWrapper = CallbackWrapper::createWeak(promise->resolve_.getFunction(runtime), runtime, jsInvoker);
> 15 |   auto weakRejectWrapper = CallbackWrapper::createWeak(promise->reject_.getFunction(runtime), runtime, jsInvoker);
    |                            ^ incomplete type 'facebook::react::CallbackWrapper' named in nested name specifier
16 | 
17 |   __block BOOL resolveWasCalled = NO;
18 |   __block BOOL rejectWasCalled = NO;
2545

❌  (node_modules/expo-modules-core/ios/JSI/ExpoModulesProxySpec.mm:95:91)

93 | 
94 |   // The function that is invoked as a setup of the JS `Promise`.
> 95 |   auto promiseSetupFunc = [expoModulesProxy, args](jsi::Runtime &runtime, std::shared_ptr<Promise> promise) {
    |                                                                                           ^ use of undeclared identifier 'Promise'
96 |     callPromiseSetupWithBlock(runtime, expoModulesProxy->jsInvoker_, promise, ^(RCTPromiseResolveBlock resolver, RCTPromiseRejectBlock rejecter) {
97 |       NSString *moduleName = convertJSIStringToNSString(runtime, args[0].getString(runtime));
98 |       NSString *methodName = convertJSIStringToNSString(runtime, args[1].getString(runtime));
2546

❌  error: 

As you can see it is telling me Promise is undefined. The call stack looks like its trying to load promises while it breaks, but I'm not too sure.

Here is my package.json:

{
"scripts": {
  "start": "expo start --dev-client",
  "android": "expo run:android",
  "ios": "expo run:ios",
  "web": "expo start --web",
  "eject": "expo eject",
  "test": "jest"
},
"dependencies": {
  "@expo/config-plugins": "^5.0.1",
  "@expo/match-media": "0.3.0",
  "@expo/webpack-config": "^0.17.0",
  "@react-native-async-storage/async-storage": "~1.17.3",
  "@react-native-community/datetimepicker": "6.3.2",
  "@react-native-community/viewpager": "5.0.11",
  "@react-native-firebase/app": "^15.4.0",
  "@react-native-picker/picker": "2.4.4",
  "@react-navigation/bottom-tabs": "^6.1.0",
  "@react-navigation/drawer": "^6.4.2",
  "@react-navigation/native": "^6.0.10",
  "@react-navigation/stack": "^6.2.1",
  "@stripe/react-stripe-js": "^1.10.0",
  "@stripe/stripe-js": "^1.35.0",
  "@stripe/stripe-react-native": "0.18.1",
  "eas-cli": "^2.1.0",
  "expo": "~46.0.9",
  "expo-auth-session": "~3.7.1",
  "expo-av": "~12.0.4",
  "expo-calendar": "~10.3.0",
  "expo-checkbox": "~2.2.0",
  "expo-dev-client": "~1.2.1",
  "expo-device": "~4.3.0",
  "expo-facebook": "~12.2.0",
  "expo-google-sign-in": "~11.0.0",
  "expo-image-manipulator": "~10.4.0",
  "expo-image-picker": "~13.3.1",
  "expo-linear-gradient": "~11.4.0",
  "expo-modules-autolinking": "^0.10.3",
  "expo-notifications": "~0.16.1",
  "expo-random": "~12.3.0",
  "expo-screen-orientation": "~4.3.0",
  "expo-splash-screen": "~0.16.2",
  "expo-status-bar": "~1.4.0",
  "expo-updates": "~0.14.5",
  "express": "^4.17.1",
  "firebase": "^9.6.7",
  "firebase-functions": "^3.13.1",
  "google-map-react": "^2.1.10",
  "google-maps-react": "^2.0.6",
  "idb": "^7.0.1",
  "modal-enhanced-react-native-web": "^0.2.0",
  "modal-react-native-web": "^0.2.0",
  "ngeohash": "^0.6.3",
  "react": "18.0.0",
  "react-calendar": "^3.1.0",
  "react-collapsible": "^2.10.0",
  "react-dom": "18.1.0",
  "react-dropdown": "^1.10.0",
  "react-google-autocomplete": "^2.6.1",
  "react-helmet": "^6.1.0",
  "react-native": "0.69.1",
  "react-native-anchor-point": "^1.0.1",
  "react-native-calendar-strip": "^2.0.9",
  "react-native-calendars": "^1.1285.0",
  "react-native-collapsible": "^1.6.0",
  "react-native-date-picker": "^4.2.1",
  "react-native-dropdown-picker": "^5.4.2",
  "react-native-elements": "^3.0.0-alpha.1",
  "react-native-gesture-handler": "~2.6.0",
  "react-native-gifted-chat": "^1.0.4",
  "react-native-google-places-autocomplete": "^2.4.1",
  "react-native-keyboard-aware-scroll-view": "^0.9.5",
  "react-native-maps": "1.3.1",
  "react-native-material-ripple": "^0.9.1",
  "react-native-modal": "^13.0.1",
  "react-native-paypal": "^4.1.0",
  "react-native-ratings": "^8.0.3",
  "react-native-read-more-text": "^1.1.2",
  "react-native-reanimated": "^2.2.1",
  "react-native-render-html": "^6.3.4",
  "react-native-responsive-ui": "^2.1.1",
  "react-native-screens": "~3.17.0",
  "react-native-svg": "13.1.0",
  "react-native-uuid": "^2.0.1",
  "react-native-video": "^5.2.0",
  "react-native-web": "~0.18.7",
  "react-native-web-hover": "^0.2.9",
  "react-native-web-maps": "^0.3.0",
  "react-native-webview": "11.23.1",
  "react-number-format": "^4.4.1",
  "react-paypal-button-v2": "^2.6.2",
  "react-pro-sidebar": "^0.7.1",
  "react-responsive": "^8.1.0",
  "react-ripples": "^2.2.1",
  "react-select": "^5.4.0",
  "react-time-picker": "^4.5.0",
  "save": "^2.4.0",
  "expo-build-properties": "~0.3.0"
},
"devDependencies": {
  "@babel/cli": "^7.12.10",
  "@babel/core": "^7.18.6",
  "babel-preset-expo": "~9.2.0",
  "jest": "^29.0.3",
  "typescript": "^4.6.3"
},
"private": true,
"name": "React",
"version": "1.0.0"
}

The cocoapods seem to install successfully. Anyone know whats causing this error?

Dustin Spengler
  • 5,478
  • 4
  • 28
  • 36
  • 1
    I dont know if it helps you,i was getting failed builds when i had forgotten git ignored some of my files – Vaggelis Sep 11 '22 at 14:20
  • @Vaggelis I only have a handful on files listed in my .gitIgnore file so I dont think its the culprit in my case. I will try removing some items from the list however and see if the build works – Dustin Spengler Sep 11 '22 at 14:44

2 Answers2

0

I was able to fix this issue by removing @react-native-firebase/app from the plugins section in my apps.json file and changing the useFrameworks flag to static:

"plugins": [
  "@react-native-firebase/app", //remove this
  [
    "expo-build-properties",
      {
        "ios": {
           "useFrameworks": "static"
         }
      }
   ]
]
Dustin Spengler
  • 5,478
  • 4
  • 28
  • 36
0

yarn add expo-modules-core from this comment helped

Aliaksei
  • 1,094
  • 11
  • 20