Неперехваченная ошибка синтаксиса: запрошенный модуль ‘https://www.gstatic.com/firebasejs/9.6.0/firebase-app.js ‘ не предоставляет экспорт с именем ‘default’

#javascript #firebase #firebase-authentication #google-authentication

#javascript #firebase #firebase-аутентификация #google-аутентификация

Вопрос:

Я пытаюсь настроить и протестировать аутентификацию Google для веб-приложения, над которым я работаю. У меня было много проблем с запуском функций javascript, и я не уверен, почему. Я использую весь импорт CDN, потому что у меня была ошибка, ссылающаяся на папки firebase локально. Вот мои файлы:

firebase-config.js

 // Import the functions you need from the SDKs you need
import firebase from "https://www.gstatic.com/firebasejs/9.6.0/firebase-app.js"; 
import { getAnalytics } from "https://www.gstatic.com/firebasejs/9.6.0/firebase-analytics.js";

const firebaseConfig = {
 [config keys]
};

// Initialize Firebase app
const fb_app = firebase.initializeApp(firebaseConfig); // returns an app 
const analytics = getAnalytics(app);
export {fb_app};
 

signin.js

 import {fb_app} from "/src/firebase-config.js";

import { getAuth, signInWithPopup, GoogleAuthProvider } from "https://www.gstatic.com/firebasejs/9.4.0/firebase-auth.js";

fb_app; // I was getting an error that the firebase app isn't initialized, so I placed this here to see if it was work. I am not sure this is the correct way to call the app in this file. 

const auth = getAuth();
const provider = new GoogleAuthProvider(); 

signInWithPopup(auth, provider)
  .then((result) => {
    console.log("Signing User In...");
    // This gives you a Google Access Token. You can use it to access the Google API.
    const credential = GoogleAuthProvider.credentialFromResult(result);
    const token = credential.accessToken;
    // The signed-in user info.
    const user = result.user;
    // ...
  }).catch((error) => {
    // Handle Errors here.
    const errorCode = error.code;
    const errorMessage = error.message;
    // The email of the user's account used.
    const email = error.email;
    // The AuthCredential type that was used.
    const credential = GoogleAuthProvider.credentialFromError(error);
    // ...
  });
document.getElementById("signInButton").onclick = signInWithPopup(auth, provider); // this is how I am importing the function to the html. 
 

index.html

 <body>
        <div class="loginbox">
            <h1>Login</h1>
            <form>
                <div id="google-signin"> 
                    <button id="signInButton">Login with Google -></button>
                </div>
            </form>
        </div>
        <!-- <script src="https://unpkg.com/react@17/umd/react.development.js" crossorigin></script>
        <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js" crossorigin></script>
        <script src="/src/signin.jsx"></script> -->
    </body>
 

Любая помощь была бы признательна. Я очень новичок в изучении этого материала, поэтому я понимаю, мог ли я непреднамеренно сделать что-то не так. Я получил много разных ошибок, связанных с меньшими незначительными деталями, но я искренне не понимаю, почему возникает эта ошибка. Заранее благодарю вас.

Ответ №1:

вам нужно больше сведений об используемых вами библиотеках. ошибка возникает здесь

 import firebase from "https://www.gstatic.com/firebasejs/9.6.0/firebase-app.js"; 
 

вы пытаетесь импортировать default объект из библиотеки, не используя импорт в скобках. который не предоставляется из библиотеки firebase.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

Комментарии:

1. Просто добавлю: использование 9.x.x в вашем коде означает, что это модульная версия Firebase SDK. Импорт по умолчанию сработал бы, если бы вы использовали что-либо ниже этой версии. Ссылка: firebase.google.com/docs/web/modular-upgrade .