Contexto:
Finalmente obtuve la iniciativa de adaptar la biblioteca de Firebase en mi aplicación desde la compatibilidad con 9.0.2 a la nueva biblioteca modular que se puede sacudir en forma de árbol. Estoy en Windows 10, uso WebStorm, y mi paquete.json solo tiene la dependencia { "firebase": "^9.0.2" } .
Lo que debería funcionar:
Cuando intento importar initializeApp como se muestra en la documentación:
import { initializeApp } from 'firebase/app'; const firebaseApp = initializeApp({ /* config */ }); Recibo el error Cannot resolve symbol 'initializeApp' .
Intentos de arreglar:
Estoy probando esta nueva biblioteca de Firebase en un proyecto simple de Vue.js, solo configurado con ESLint y Babel. Intenté eliminar la carpeta node_modules , limpiar el chace, reinstalar todo desde npm, pero nada parece hacer que la importación estándar funcione.
Solución actual:
Busqué en node_modules/firebase y, por supuesto, todas las funciones estándar están ahí, dentro de archivos javascript como firebase-app.js y firebase-auth.js . Esto significa que puedo importar todo de la siguiente manera:
import { initializeApp } from 'firebase/firebase-app'; const firebaseApp = initializeApp({ /* config */ });Pero estoy seguro de que esto no es normal ni esperado, ya que parece que soy el único que ha informado de este comportamiento. ¿Que me estoy perdiendo aqui?
ACTUALIZACIÓN: como dijo @Dharmaraj, este error no ocurre cuando el mismo proyecto está configurado en VS Code, por lo que parece ser un problema de WebStorm.
Así que realmente fue un problema de WebStorm. Como identificó @LazyOne, podemos encontrar la solución para los problemas relacionados con el Cannot resolve symbol ... aquí y aquí , con respecto a WebStorm y PhpStorm.
TL;DR: Todo lo que tiene que hacer es: abrir node_modules , hacer clic derecho en el módulo (carpeta) @firebase y seleccionar Mark as not excluded .
Significa que su IDE ahora indexará esos archivos, y ahora es posible importar funciones desde archivos dentro de @firebase , ya que el programa los reconoce.
¡Gracias a todos los involucrados!