firebase / flutterfire

πŸ”₯ A collection of Firebase plugins for Flutter apps.
https://firebase.google.com/docs/flutter/setup
BSD 3-Clause "New" or "Revised" License
8.68k stars 3.97k forks source link

πŸ› [firebase_messaging] Web app crashes on load when not using firebase config in index.html #5269

Closed devjeff closed 3 years ago

devjeff commented 3 years ago

Bug report

The Readme for the FlutterFire plugins indicates that you can initialize the FirebaseApp in the Dart code using package:firebase_core methods.

However, firebase_messaging_web crashes on application load when a default app has not been initialised in index.html. From what I can see, this is because the implementation of firebase_messaging_web tries to access the default firebase app when it is constructed as part of plugin registration. This means, that it is necessary to initialize the firebase app twice - in the dart code and in the index.html.

This is actually the same issue, as this one here concerning the analytics plugin.

Steps to reproduce

Steps to reproduce the behavior:

  1. Take a project with Flutter Web enabled and a dependency to the firebase messaging package.
  2. Comment-out the firebaseApp initialization in index.html. The FirebaseApp configuration in main.dart is still present.
  3. Run the app for web flutter run -d chrome.

Apps fails to load with following error:

errors.ts:101 Uncaught (in promise) FirebaseError: Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp() (app/no-app).
    at Object.f [as app] (https://www.gstatic.com/firebasejs/7.22.1/firebase-app.js:1:17054)
    at Object.app$ [as app] (http://localhost:59302/packages/firebase_core_web/src/interop/core.dart.lib.js:42:101)
    at new firebase_messaging_web.FirebaseMessagingWeb.new (http://localhost:59302/packages/firebase_messaging_web/firebase_messaging_web.dart.lib.js:192:64)
    at Function.registerWith (http://localhost:59302/packages/firebase_messaging_web/firebase_messaging_web.dart.lib.js:56:73)
    at Object.registerPlugins (http://localhost:59302/packages/craftsmen_mobile_client/generated_plugin_registrant.dart.lib.js:34:49)
    at main (http://localhost:59302/web_entrypoint.dart.lib.js:44:35)
    at main.next (<anonymous>)
    at runBody (http://localhost:59302/dart_sdk.js:39052:34)
    at Object._async [as async] (http://localhost:59302/dart_sdk.js:39083:7)
    at main$ (http://localhost:59302/web_entrypoint.dart.lib.js:43:18)
    at http://localhost:59302/main_module.bootstrap.js:19:10
    at Array.forEach (<anonymous>)
    at window.$dartRunMain (http://localhost:59302/main_module.bootstrap.js:18:32)
    at <anonymous>:1:8
    at Object.runMain (http://localhost:59302/dwds/src/injected/client.js:8656:21)

Expected behavior

The web app should not crash at this point. The firebase_messaging plugin shouldn't access the firebase instance during plugin registration to avoid a redundant registration of the plugin.


Flutter doctor

Run flutter doctor and paste the output below:

Click To Expand ``` Doctor summary (to see all details, run flutter doctor -v): [√] Flutter (Channel beta, 2.0.0, on Microsoft Windows [Version 10.0.19042.804], locale de-DE) [√] Android toolchain - develop for Android devices (Android SDK version 30.0.3) [√] Chrome - develop for the web [√] Android Studio (version 4.0) [√] VS Code (version 1.53.2) [√] Connected device (2 available) β€’ No issues found! ```

Flutter dependencies

Run flutter pub deps -- --style=compact and paste the output below:

Click To Expand ``` Dart SDK 2.12.0 Flutter SDK 2.0.0 craftsmen_mobile_client 1.7.2+86 dependencies: - amplitude_flutter 2.2.1 [flutter] - badges 1.1.1 [flutter] - bloc 6.0.3 [meta] - cached_network_image 2.3.3 [flutter flutter_cache_manager octo_image] - clipboard 0.1.2+8 [flutter] - collection 1.15.0 - connectivity 3.0.2 [flutter meta connectivity_platform_interface connectivity_macos] - contacts_service 0.3.10 [flutter collection quiver] - country_pickers 1.1.0 [flutter] - csv 4.1.0 - cupertino_icons 0.1.3 - decimal 0.3.5 [rational] - device_info 0.4.2+7 [flutter device_info_platform_interface] - equatable 1.2.5 [collection meta] - excel 1.1.5 [archive xml] - f_logs 1.3.0-alpha-02 [flutter sembast path_provider intl xxtea meta path stack_trace] - file_picker 3.0.0 [flutter flutter_web_plugins flutter_plugin_android_lifecycle plugin_platform_interface] - firebase_core 1.0.0 [firebase_core_platform_interface firebase_core_web flutter meta] - firebase_crashlytics 1.0.0 [firebase_core firebase_core_platform_interface firebase_crashlytics_platform_interface flutter stack_trace] - firebase_messaging 9.0.0 [firebase_core firebase_core_platform_interface firebase_messaging_platform_interface firebase_messaging_web flutter meta] - flutter 0.0.0 [characters collection meta typed_data vector_math sky_engine] - flutter_apns 1.4.1 [flutter firebase_messaging] - flutter_bloc 6.0.5 [flutter bloc provider] - flutter_branch_sdk 1.1.0 [flutter] - flutter_cache_manager 1.4.2 [flutter path_provider uuid http path sqflite pedantic clock file rxdart] - flutter_cupertino_localizations 1.0.1 [flutter flutter_localizations] - flutter_email_sender 4.0.0 [flutter] - flutter_image_compress 0.6.8 [flutter] - flutter_linkify 4.0.2 [flutter linkify] - flutter_local_notifications 4.0.1+2 [flutter flutter_local_notifications_platform_interface platform timezone] - flutter_localizations 0.0.0 [flutter intl characters clock collection meta path typed_data vector_math] - flutter_ringtone_player 2.0.0 [flutter] - flutter_sms 1.1.0 [flutter] - flutter_speed_dial 1.2.5 [flutter] - flutter_styled_toast 1.4.0+1 [flutter flutter_localizations] - flutter_svg 0.20.0-nullsafety.3 [flutter meta path_drawing vector_math xml] - get_it 4.0.4 [async meta] - google_fonts 1.1.2 [flutter http path_provider crypto] - hex 0.1.2 - image_picker 0.7.2 [flutter flutter_plugin_android_lifecycle image_picker_platform_interface] - intl 0.17.0-nullsafety.2 [clock path] - json_annotation 3.0.1 - logger 0.8.3 [io] - logging 0.11.4 - main_thread_started_check 0.0.1 [flutter] - material_design_icons_flutter 4.0.5555 [flutter] - matrix_dart_sdk 0.0.1 [flutter chopper json_annotation uuid jaguar_orm mime_type path_provider logger image universal_platform] - mime_type 0.2.7 - oauth2 1.6.3 [http http_parser crypto] - open_file 3.0.1 [flutter ffi] - package_info 0.4.3 [flutter] - path_provider 2.0.1 [flutter path_provider_platform_interface path_provider_macos path_provider_linux path_provider_windows] - permission_handler 6.0.1 [flutter meta permission_handler_platform_interface] - photo_view 0.10.2 [flutter] - preferences 5.2.1 [flutter shared_preferences] - quiver 2.1.3 [matcher meta] - random_color 1.0.5 [flutter] - scrollable_positioned_list 0.1.8 [flutter meta] - share 2.0.0 [meta mime flutter] - shared_preferences 0.5.7+2 [meta flutter shared_preferences_platform_interface shared_preferences_macos shared_preferences_web] - simple_animations 1.3.12 [flutter] - sqflite 1.3.1+1 [flutter sqflite_common path] - universal_platform 0.1.3 - url_launcher 6.0.2 [flutter url_launcher_platform_interface url_launcher_linux url_launcher_macos url_launcher_windows url_launcher_web] - uuid 2.2.2 [crypto convert] - vibration 1.7.1 [flutter vibration_web] dev dependencies: - build_runner 1.11.1 [args async build build_config build_daemon build_resolvers build_runner_core code_builder collection crypto dart_style glob graphs http_multi_server io js logging meta mime path pedantic pool pub_semver pubspec_parse shelf sh elf_web_socket stack_trace stream_transform timing watcher web_socket_channel yaml] - effective_dart 1.2.4 - flutter_driver 0.0.0 [file meta path vm_service webdriver flutter flutter_test fuchsia_remote_debug_protocol archive args async boolean_selector characters charcode clock collection convert crypto fake_async matcher platform process source_span s tack_trace stream_channel string_scanner sync_http term_glyph test_api typed_data vector_math] - flutter_launcher_icons 0.8.1 [image args yaml path] - flutter_test 0.0.0 [flutter test_api path fake_async clock stack_trace vector_math async boolean_selector characters charcode collection matcher meta source_span stream_channel string_scanner term_glyph typed_data] - jaguar_orm_gen 2.2.30 [jaguar_query jaguar_orm analyzer build logging source_gen meta] - jaguar_query_sqflite 2.2.11 [flutter sqflite jaguar_query] - json_serializable 3.2.3 [analyzer build build_config json_annotation meta path source_gen] - screenshots 2.1.1 [args yaml resource path file archive platform process meta intl tool_mobile] - test 1.16.0-nullsafety.19 [analyzer async boolean_selector coverage http_multi_server io js node_preamble package_config path pedantic pool shelf shelf_packages_handler shelf_static shelf_web_socket source_span stack_trace stream_channel typed_da ta web_socket_channel webkit_inspection_protocol yaml test_api test_core] dependency overrides: - analyzer 0.38.5 [args charcode collection convert crypto front_end glob html kernel meta package_config path pub_semver source_span watcher yaml] - ffi 1.0.0 - file 5.2.1 [intl meta path] - firebase_messaging 9.0.0 [firebase_core firebase_core_platform_interface firebase_messaging_platform_interface firebase_messaging_web flutter meta] - http 0.12.2 [http_parser path pedantic] - intl 0.17.0-nullsafety.2 [clock path] - path_provider 2.0.1 [flutter path_provider_platform_interface path_provider_macos path_provider_linux path_provider_windows] - platform 2.2.1 - plugin_platform_interface 2.0.0 [meta] - process 3.0.13 [file intl meta path platform] - xml 5.0.0-nullsafety.1 [collection meta petitparser] transitive dependencies: - archive 2.0.13 [crypto args path] - args 1.6.0 - async 2.5.0 [collection] - boolean_selector 2.1.0 [source_span string_scanner] - build 1.5.2 [analyzer async convert crypto logging meta path glob] - build_config 0.4.2 [checked_yaml json_annotation meta path pubspec_parse yaml] - build_daemon 2.1.4 [built_collection built_value http_multi_server logging pedantic path pool shelf shelf_web_socket stream_transform watcher web_socket_channel] - build_resolvers 1.4.4 [analyzer build crypto graphs logging meta path package_config pool pub_semver] - build_runner_core 6.0.3 [async build build_config build_resolvers collection convert crypto glob graphs json_annotation logging meta path package_config pedantic pool timing watcher yaml] - built_collection 4.3.2 [collection quiver] - built_value 7.1.0 [built_collection collection fixnum quiver] - characters 1.1.0 - charcode 1.2.0 - checked_yaml 1.0.2 [json_annotation source_span yaml] - chopper 3.0.3 [http meta logging] - clock 1.1.0 - code_builder 3.4.1 [built_collection built_value collection matcher meta] - connectivity_macos 0.2.0 [flutter] - connectivity_platform_interface 2.0.1 [flutter meta plugin_platform_interface] - convert 2.1.1 [charcode typed_data] - coverage 0.15.0 [args logging package_config path source_maps stack_trace vm_service] - crypto 2.1.5 [collection convert typed_data] - csslib 0.16.2 [source_span] - dart_style 1.3.3 [analyzer args path source_span] - device_info_platform_interface 1.0.1 [flutter meta plugin_platform_interface] - fake_async 1.2.0 [clock collection] - firebase_core_platform_interface 4.0.0 [flutter meta plugin_platform_interface] - firebase_core_web 1.0.0 [firebase_core_platform_interface flutter flutter_web_plugins js meta] - firebase_crashlytics_platform_interface 2.0.0 [collection firebase_core flutter meta plugin_platform_interface] - firebase_messaging_platform_interface 2.0.0 [firebase_core flutter meta plugin_platform_interface] - firebase_messaging_web 1.0.0 [firebase_core firebase_core_web firebase_messaging_platform_interface flutter flutter_web_plugins js meta] - fixnum 0.10.11 - flutter_blurhash 0.5.0 [flutter meta] - flutter_local_notifications_platform_interface 2.0.0+1 [flutter plugin_platform_interface] - flutter_plugin_android_lifecycle 2.0.0 [flutter] - flutter_web_plugins 0.0.0 [flutter js characters collection meta typed_data vector_math] - front_end 0.1.27 [kernel package_config meta] - fuchsia_remote_debug_protocol 0.0.0 [process vm_service file meta path platform] - glob 1.2.0 [async collection node_io path pedantic string_scanner] - graphs 0.2.0 - html 0.14.0+3 [csslib source_span] - http_multi_server 2.2.0 [async] - http_parser 3.1.4 [charcode collection source_span string_scanner typed_data] - image 2.1.14 [archive xml] - image_picker_platform_interface 2.0.1 [flutter meta http plugin_platform_interface] - io 0.3.4 [charcode meta path string_scanner] - jaguar_orm 2.2.7 [jaguar_query quiver path meta] - jaguar_query 2.2.9 [meta] - js 0.6.3 - kernel 0.3.27 [args meta] - linkify 3.0.0 - matcher 0.12.10 [stack_trace] - meta 1.3.0 - mime 1.0.0 - nested 0.0.4 [flutter] - node_interop 1.1.1 [js] - node_io 1.1.1 [node_interop path] - node_preamble 1.4.12 - octo_image 0.3.0 [flutter flutter_blurhash] - package_config 1.9.3 [path charcode] - path 1.8.0 - path_drawing 0.5.0-nullsafety.0 [vector_math meta path_parsing flutter] - path_parsing 0.2.0-nullsafety.0 [vector_math meta] - path_provider_linux 2.0.0 [path xdg_directories path_provider_platform_interface flutter] - path_provider_macos 2.0.0 [flutter] - path_provider_platform_interface 2.0.1 [flutter meta platform plugin_platform_interface] - path_provider_windows 2.0.0 [path_provider_platform_interface meta path flutter ffi win32] - pedantic 1.10.0-nullsafety.3 - permission_handler_platform_interface 3.0.0+1 [flutter meta plugin_platform_interface] - petitparser 4.0.0-nullsafety.1 [meta] - pool 1.5.0 [async stack_trace] - provider 4.3.2+2 [flutter nested collection] - pub_cache 0.2.3 [path pub_semver yaml] - pub_semver 1.4.4 [collection] - pubspec_parse 0.1.5 [checked_yaml json_annotation pub_semver yaml] - rational 0.3.8 - resource 2.1.7 [typed_data] - rxdart 0.23.1 - sembast 2.4.7+6 [meta path synchronized] - shared_preferences_macos 0.0.1+10 [shared_preferences_platform_interface flutter] - shared_preferences_platform_interface 1.0.4 [meta flutter] - shared_preferences_web 0.1.2+7 [shared_preferences_platform_interface flutter flutter_web_plugins meta] - shelf 0.7.9 [async collection http_parser path stack_trace stream_channel] - shelf_packages_handler 2.0.0 [path shelf shelf_static] - shelf_static 0.2.9+1 [convert http_parser mime path shelf] - shelf_web_socket 0.2.3 [shelf web_socket_channel stream_channel] - sky_engine 0.0.99 - source_gen 0.9.4+6 [analyzer async build dart_style glob meta path pedantic source_span] - source_map_stack_trace 2.1.0 [path stack_trace source_maps] - source_maps 0.10.10 [source_span] - source_span 1.8.0 [charcode collection path term_glyph] - sqflite_common 1.0.2+1 [synchronized path meta] - stack_trace 1.10.0 [path] - stream_channel 2.1.0 [async] - stream_transform 1.2.0 - string_scanner 1.1.0 [charcode source_span] - sync_http 0.2.0 - synchronized 2.2.0+2 - term_glyph 1.2.0 - test_api 0.2.19 [async boolean_selector collection meta path source_span stack_trace stream_channel string_scanner term_glyph matcher] - test_core 0.3.12-nullsafety.17 [analyzer async args boolean_selector collection coverage glob io meta package_config path pedantic pool source_map_stack_trace source_maps source_span stack_trace stream_channel vm_service yaml matcher test_api] - timezone 0.6.1 [path] - timing 0.1.1+2 [json_annotation] - tool_base 1.9.5+3 [archive file platform process pub_cache] - tool_mobile 1.9.5+1 [tool_base] - typed_data 1.3.0 [collection] - url_launcher_linux 2.0.0 [flutter] - url_launcher_macos 2.0.0 [flutter] - url_launcher_platform_interface 2.0.2 [flutter plugin_platform_interface] - url_launcher_web 2.0.0 [url_launcher_platform_interface meta flutter flutter_web_plugins] - url_launcher_windows 2.0.0 [flutter] - vector_math 2.1.0 - vibration_web 1.6.2 [flutter flutter_web_plugins] - vm_service 5.5.0 [meta] - watcher 0.9.7+15 [async path pedantic] - web_socket_channel 1.1.0 [async crypto stream_channel] - webdriver 2.1.2 [archive matcher path stack_trace sync_http] - webkit_inspection_protocol 0.7.4 [logging] - win32 2.0.0 [ffi] - xdg_directories 0.2.0 [meta path process] - xxtea 2.0.3 - yaml 2.2.1 [charcode collection string_scanner source_span] ```

markusaksli-nc commented 3 years ago

Closing this as a duplicate of https://github.com/FirebaseExtended/flutterfire/issues/3962 since they are functionally the same issue.