'Firebase SDK V9 auto-configuration with /__/firebase/init.js
After moving to the modular SDK V9 auto-configuration does not work any more using /__/firebase/init.js. It's expected as init.js contains the old initialization schema.
Unfortunately it is not mentioned neither in the documentation nor in the migration guide how to make auto-configuration work in the V9.
Solution 1:[1]
For now, the V9 SDKs only work with the explicit configuration snippet (which you can get from the Firebase console and from your site's __/firebase/init.json).
Unfortunately, since the __/firebase/init.js and __/firebase/init.json is provided by Firebase Hosting at run-time, it's not really compatible with tree-shaking (which is the primary reason for the modular SDKs).
Solution 2:[2]
You can fetch /__/firebase/init.json at runtime but then you have to deal with initializeApp(firebaseConfig) being a promise or top-level await which isn't well supported in tooling yet.
import { initializeApp } from 'firebase/app';
const response = await fetch('/__/firebase/init.json');
const firebaseApp = initializeApp(await response.json());
It's a hack but you could also work around this with /__/firebase/init.js.
<script>
  // Capture the config object from /__/firebase/init.js
  window.firebase = {
    initializeApp: (config) => {
      window.firebaseConfig = config;
      // Delete fake Firebase global
      delete window.firebase;
    },
  };
</script>
<script src="/__/firebase/init.js"></script>
<script type="module">
  import { initializeApp } from 'firebase/app';
  
  const firebaseConfig = window.firebaseConfig;
  if (!firebaseConfig) {
    throw new Error('window.firebaseConfig is not defined');
  }
  const firebaseApp = initializeApp(firebaseConfig);
</script>
    					Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|---|
| Solution 1 | Kiana | 
| Solution 2 | abraham | 
