react-native-firebase icon indicating copy to clipboard operation
react-native-firebase copied to clipboard

[🔥] Unable to reach callable cloud function - an internal error has occurred, DEADLINE_EXCEEDED, could not connect to the server

Open parmy opened this issue 4 months ago • 0 comments

Issue

The issues are identical to those described in this closed ticket: https://github.com/invertase/react-native-firebase/issues/6263.

Randomly I was seeing the same issues on Android ( java.util.concurrent.ExecutionException ) and on iOS (.An internal error has occurred, print and inspect the error details for more information ).

After a complete reset, Android has been working fine; although I did nothing other then cleared gradle and rebuuld.

For iOS, a clean build had things running for a while. But as soon as the Android app started to work, the iOS mysteriously stopped working and hasn't worked since.

Unfortunately the message "An internal error has occurred, print and inspect the error details for more information" doesn't help with where to dive in deeper.

I was hoping replacing the firebase json files would fix things, but those files in my project are already identical to the laetst available in the Firebase console.

iOS fails calling functions live or in the production server. There is a live version of the app which continues to works fine, which only adds to the confusion.


Project Files

Javascript

Click To Expand const addUserFunc = functions.httpsCallable('signUpUser');

const response = await addUserFunc({ email, password, type: userType }); package.json:

  "dependencies": {
    "@cometchat/chat-sdk-react-native": "^4.0.12",
    "@expo/metro-runtime": "~3.2.3",
    "@gorhom/bottom-sheet": "^4.6.4",
    "@notifee/react-native": "^9.0.2",
    "@react-native-async-storage/async-storage": "^2.0.0",
    "@react-native-clipboard/clipboard": "^1.14.2",
    "@react-native-community/datetimepicker": "^8.2.0",
    "@react-native-community/masked-view": "^0.1.11",
    "@react-native-firebase/app": "^20.5.0",
    "@react-native-firebase/auth": "^20.5.0",
    "@react-native-firebase/crashlytics": "^20.5.0",
    "@react-native-firebase/firestore": "^20.5.0",
    "@react-native-firebase/functions": "^20.5.0",
    "@react-native-firebase/messaging": "^20.5.0",
    "@react-native-firebase/storage": "^20.5.0",
    "@react-navigation/bottom-tabs": "^6.6.1",
    "@react-navigation/native": "^6.0.2",
    "@react-navigation/stack": "^6.4.1",
    "@rneui/base": "^4.0.0-rc.7",
    "@rneui/themed": "^4.0.0-rc.8",
    "expo": "~51.0.31",
    "expo-application": "~5.9.1",
    "expo-build-properties": "~0.12.5",
    "expo-constants": "~16.0.2",
    "expo-dev-client": "~4.0.26",
    "expo-device": "~6.0.2",
    "expo-image": "~1.13.0",
    "expo-image-manipulator": "~12.0.5",
    "expo-image-picker": "~15.0.7",
    "expo-linking": "~6.3.1",
    "expo-localization": "~15.0.3",
    "expo-router": "~3.5.23",
    "expo-splash-screen": "~0.27.5",
    "expo-status-bar": "~1.12.1",
    "expo-system-ui": "~3.0.7",
    "expo-updates": "~0.25.25",
    "expo-web-browser": "~13.0.3",
    "react": "18.2.0",
    "react-dom": "18.2.0",
    "react-native": "0.74.5",
    "react-native-app-intro-slider": "^4.0.4",
    "react-native-gesture-handler": "~2.16.1",
    "react-native-image-crop-picker": "^0.41.2",
    "react-native-modal-datetime-picker": "^18.0.0",
    "react-native-permissions": "^4.1.5",
    "react-native-reanimated": "~3.10.1",
    "react-native-safe-area-context": "4.10.5",
    "react-native-screens": "3.31.1",
    "react-native-svg": "^15.7.1",
    "react-native-switch-selector": "^2.3.0",
    "react-native-web": "~0.19.10",
    "react-native-webview": "13.8.6",
    "reanimated-bottom-sheet": "^1.0.0-alpha.22",
    "ts-custom-error": "^3.3.1",
    "use-debounce": "^10.0.3",
    "with-rn-image-crop-picker": "^0.2.0"
  },
  "devDependencies": {
    "@babel/core": "^7.19.3",
    "@firebase/rules-unit-testing": "^2.0.4",
    "@types/react": "~18.2.14",
    "@typescript-eslint/eslint-plugin": "^6.6.0",
    "@typescript-eslint/parser": "^6.6.0",
    "babel-plugin-inline-import": "^3.0.0",
    "cross-env": "^7.0.3",
    "eslint": "^8.26.0",
    "eslint-config-google": "^0.14.0",
    "expo-module-scripts": "^3.5.2",
    "firebase-admin": "^12.2.0",
    "patch-package": "^6.4.7",
    "postinstall-postinstall": "^2.1.0",
    "typescript": "~5.3.3"
  },

firebase.json for react-native-firebase v6:

# N/A

iOS

Click To Expand

ios/Podfile:

  • [ ] I'm not using Pods
  • [x] I'm using Pods and my Podfile looks like:
require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods")

require 'json'
podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}

ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0'
ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR']

platform :ios, podfile_properties['ios.deploymentTarget'] || '13.4'
install! 'cocoapods',
  :deterministic_uuids => false

prepare_react_native_project!
# @generated begin bt-rn-permissions - expo prebuild (DO NOT MODIFY) sync- [numbers removed]
 def node_require(script)
   # Resolve script with node to allow for hoisting
   require Pod::Executable.execute_command('node', ['-p',
     "require.resolve(
       '#{script}',
       {paths: [process.argv[1]]},
     )", __dir__]).strip
 end
 node_require('react-native/scripts/react_native_pods.rb')
 node_require('react-native-permissions/scripts/setup.rb')
setup_permissions([
'Notifications',
'PhotoLibrary'])
# @generated end bt-rn-permissions

target 'BT' do
  use_expo_modules!
  config = use_native_modules!

  use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks']
  use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS']

  use_react_native!(
    :path => config[:reactNativePath],
    :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes',
    # An absolute path to your application root.
    :app_path => "#{Pod::Config.instance.installation_root}/..",
    :privacy_file_aggregation_enabled => podfile_properties['apple.privacyManifestAggregationEnabled'] != 'false',
  )

  post_install do |installer|
    react_native_post_install(
      installer,
      config[:reactNativePath],
      :mac_catalyst_enabled => false,
      :ccache_enabled => podfile_properties['apple.ccacheEnabled'] == 'true',
    )

    # This is necessary for Xcode 14, because it signs resource bundles by default
    # when building for devices.
    installer.target_installation_results.pod_target_installation_results
      .each do |pod_name, target_installation_result|
      target_installation_result.resource_bundle_targets.each do |resource_bundle_target|
        resource_bundle_target.build_configurations.each do |config|
          config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
        end
      end
    end
  end

  post_integrate do |installer|
    begin
      expo_patch_react_imports!(installer)
    rescue => e
      Pod::UI.warn e
    end
  end
end

AppDelegate.m:

// N/A

Android

Click To Expand Not sure how to complete this section. The React-Native App is from an Expo Template, as it's working at the moment I've not included any further details, but if they are required, I'll be happy to provide.

Have you converted to AndroidX?

  • [ ] my application is an AndroidX application?
  • [ ] I am using android/gradle.settings jetifier=true for Android compatibility?
  • [ ] I am using the NPM package jetifier for react-native compatibility?

android/build.gradle:

// N/A

android/app/build.gradle:

// N/A

android/settings.gradle:

// N/A

MainApplication.java:

// N/A

AndroidManifest.xml:

<!-- N/A -->

Environment

Click To Expand

react-native info output:

System:
  OS: macOS 13.5.2
  CPU: (10) arm64 Apple M1 Max
  Memory: 84.92 MB / 64.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 20.17.0
    path: ~/.nvm/versions/node/v20.17.0/bin/node
  Yarn: Not Found
  npm:
    version: 10.8.2
    path: ~/.nvm/versions/node/v20.17.0/bin/npm
  Watchman:
    version: 2024.06.24.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.15.2
    path: /opt/homebrew/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 23.0
      - iOS 17.0
      - macOS 14.0
      - tvOS 17.0
      - watchOS 10.0
  Android SDK: Not Found
IDEs:
  Android Studio: 2024.1 AI-241.15989.150.2411.11948838
  Xcode:
    version: 15.0.1/15A507
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 19.0.1
    path: /usr/bin/javac
  Ruby:
    version: 2.6.10
    path: /usr/bin/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 18.2.0
    wanted: 18.2.0
  react-native:
    installed: 0.74.5
    wanted: 0.74.5
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: false
iOS:
  hermesEnabled: true
  newArchEnabled: false
  • Platform that you're experiencing the issue on:
    • [ ] iOS
    • [ ] Android
    • [ ] iOS but have not tested behavior on Android
    • [ ] Android but have not tested behavior on iOS
    • [X] Both
  • react-native-firebase version you're using that has this issue:
    • 20.5.0
  • Firebase module(s) you're using that has the issue:
    • @react-native-firebase/functions
  • Are you using TypeScript?
    • Y & 5.3.3

Additional information that may help you:

I've lauched the project in XCode, there's no additional information in the logs.

I've tried the following:

Changing info.plist from:

	<key>NSAppTransportSecurity</key>
	<dict>
		<key>NSAllowsArbitraryLoads</key>
		<false/>
		<key>NSAllowsLocalNetworking</key>
		<true/>
	</dict>

To:

	<key>NSAppTransportSecurity</key>
	<dict>
		<key>NSAllowsArbitraryLoads</key>
		<true/>
		<key>NSAllowsLocalNetworking</key>
		<true/>		
	</dict>
	<key>NSExceptionDomains</key>
	<dict>
	<key>firebaseapp.com</key>
	<dict>
		<key>NSIncludesSubdomains</key>
		<true/>
		<key>NSExceptionAllowsInsecureHTTPLoads</key>
		<true/>
		<key>NSExceptionRequiresForwardSecrecy</key>
		<false/>
		<key>NSRequiresCertificateTransparency</key>
		<false/>
	</dict>
	</dict>

Edited the Product Scheme Run option and added the following argument under Arguments Passed on Launch: "-FIRDebugEnabled", no additional logs were produced.

Any suggestions please? If you need any more information from me, please let me know. Many thanks in advance.


parmy avatar Oct 01 '24 07:10 parmy