У меня есть приложение React, и мне трудно заставить мое приложение вызывать мои функции в эмуляторе.
У меня есть firebase.js
файл, который экспортирует экземпляр следующим образом:
const firebase = require('firebase');
const instance = firebase.initializeApp({ <config data
});
export default instance;
В моем index.js
для моего проекта React я импортирую вышеупомянутое и вызываю эмулятор функций
import fb from "~/firebase";
fb.functions().useFunctionsEmulator('http://localhost:5001');
ReactDOM.render(
<ThemeProvider theme={theme}>
<BrowserRouter>
<App />
</BrowserRouter>
</ThemeProvider>
, document.getElementById('root'));
В моем компоненте я затем вызываю функцию httpsCallable следующим образом:
import React from "react";
import {Button} from "antd";
import fb from "~/firebase";
function Etsy() {
async function oAuth() {
try {
console.log("called")
fb.functions().httpsCallable('etsyOauth');
} catch (e) {
console.log(e)
}
}
return(<div>
<Button onClick={() => oAuth()}>
Etsy
</Button>
</div>)
}
export default Etsy;
В моих функциях у меня есть index.js
, который требует мои функции
const admin = require('firebase-admin');
admin.initializeApp();
exports.etsyOauth = require('./etsy/oauth');
exports.etsyCallback = require('./etsy/callback');
, а затем сама моя функция
const functions = require('firebase-functions');
module.exports = functions.https.onCall((data, context) => {
console.log("Called");
console.log(data, context)
return true;
});
Я запускаю свой эмулятор функций с помощью firebase emulators:start --only functions
, который запускается нормально и дает мне URL-адрес моей функции. Если я выполняю запрос GET, он выводит его из системы.
Однако, когда я вызываю его из моего приложения с помощью httpsCallable, он ничего не делает. Есть идеи?