#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. Если у вас возникла новая проблема, пожалуйста, приложите некоторые усилия для ее отладки, а затем отправьте новый вопрос с вашим кодом и деталями. Переполнение стека предназначено для решения одной проблемы за раз.