Javascript: вызов функции firebase со стороны клиента не работает

#javascript #firebase #google-cloud-functions

#javascript #firebase #google-cloud-функции

Вопрос:

Я пытаюсь вызвать функции firebase со стороны клиента, но получаю сообщение об ошибке, что firebase.functions не является функцией

main.js:18 Неперехваченная ошибка типа: firebase.functions не является функцией

вот main.html код

 <!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body  >

<div class="jumbotron text-center">
  <h1>My First Bootstrap Page</h1>
  <p>Resize this responsive page to see the effect!</p> 
</div>
  
 
 

<script src="https://www.gstatic.com/firebasejs/8.0.2/firebase.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.0.2/firebase-functions.js"></script>

<!-- The core Firebase JS SDK is always required and must be listed first -->
<script src="https://www.gstatic.com/firebasejs/8.0.2/firebase-app.js"></script>

<!-- TODO: Add SDKs for Firebase products that you want to use
     https://firebase.google.com/docs/web/setup#available-libraries -->
<script src="https://www.gstatic.com/firebasejs/8.0.2/firebase-analytics.js"></script>
<script type="https://requirejs.org/docs/release/2.3.5/minified/require.js"></script>

<script type="text/javascript">
     var firebaseConfig = {
    apiKey: "41414414I",
    authDomain: "414444.firebaseapp.com",
    databaseURL: "https://414144.firebaseio.com",
    projectId: "414-c4cc",
    storageBucket: "4144-cc4cc.appspot.com",
    messagingSenderId: "414542",
    appId: "1:41:web:31415425",
    measurementId: "G-542g542"
  };
  // Initialize Firebase
  firebase.initializeApp(firebaseConfig);
  firebase.analytics();
  // Initialize Cloud Functions through Firebase
    var functions = firebase.functions();
</script>

<script>
  // Your web app's Firebase configuration
  // For Firebase JS SDK v7.20.0 and later, measurementId is optional

</script>

 
<script src="main.js"></script> 
</body>
</html>  

вот мой main.js файл

  
random()
function random(){


var randomNumber = firebase.functions().httpsCallable('randomNumber');
randomNumber({text: messageText}).then(function(result) {
  // Read result of the Cloud Function.
  var sanitizedMessage = result.data.text;
  console.log(sanitizedMessage)

}).catch(function(error) {
  // Getting the Error details.
  var code = error.code;
  var message = error.message;
  var details = error.details;

  console.log(message)
  // ...
})

}  

как я могу исправить ошибку и вызвать функцию firebase со стороны клиента?

После реализации ответа Дуга он отобразился

Ошибка неперехваченной ссылки: требование не определено

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

1. Пожалуйста, отредактируйте вопрос, чтобы показать полный пример кода, который воспроизводит проблему. Мы должны иметь возможность видеть, что ваш скрипт включен для main.js по отношению к скриптам firebase. В вопросе должно быть достаточно информации, чтобы любой мог просто скопировать ее и воспроизвести — прямо сейчас мы не видим, как man.js входит в ваш main.html вместе с огневой базой.

2. @DougStevenson Я также обновил html-файл

Ответ №1:

Ваш сценарий Firebase включает неправильные и не в порядке:

 <script src="https://www.gstatic.com/firebasejs/8.0.2/firebase.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.0.2/firebase-functions.js"></script>

<!-- The core Firebase JS SDK is always required and must be listed first -->
<script src="https://www.gstatic.com/firebasejs/8.0.2/firebase-app.js"></script>

<!-- TODO: Add SDKs for Firebase products that you want to use
     https://firebase.google.com/docs/web/setup#available-libraries -->
<script src="https://www.gstatic.com/firebasejs/8.0.2/firebase-analytics.js"></script>
  

Пожалуйста, ознакомьтесь с инструкциями в документации. Во-первых, не включайте firebase.js . Во-вторых, расположите их в правильном порядке, указав firebase-app первым.

 <script src="https://www.gstatic.com/firebasejs/8.0.2/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.0.2/firebase-functions.js"</script>
<script src="https://www.gstatic.com/firebasejs/8.0.2/firebase-analytics.js"</script>
  

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

1. Хорошо, теперь он показывает эту ошибку Uncaught ReferenceError: require не определен

2. Если у вас возникла новая проблема, пожалуйста, приложите некоторые усилия для ее отладки, а затем отправьте новый вопрос с вашим кодом и деталями. Переполнение стека предназначено для решения одной проблемы за раз.