onCall firebase 函数中 firebase V9 中的 CORS 策略错误

Fri*_*oom 6 javascript node.js firebase google-cloud-functions

我遇到的问题是,一旦我想调用我的 firebase 函数,我就会收到 Cors 策略错误。我已经阅读了多个相关问题,但在 Firebase 版本 9 中找不到解决该问题的问题。 v9 中的调用语法有所不同。而且我不知道如何解决它。

错误:

Access to fetch at 'https://us-central1-mmonitor-19efd.cloudfunctions.net/sendRequest' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
Run Code Online (Sandbox Code Playgroud)

Firebase 初始化:

import { initializeApp } from 'firebase/app';
import { getFunctions } from 'firebase/functions';

const firebaseConfig = {
  apiKey: "XXXX",
  authDomain: "XXXX",
  projectId: "XXXX",
  storageBucket: "XXXX",
  messagingSenderId: "XXXX",
  appId: "XXXX",
  measurementId: "XXXX"
};
export const firebaseApp = initializeApp(firebaseConfig);
export const functions = getFunctions()
Run Code Online (Sandbox Code Playgroud)

函数调用:

import { firebaseApp, functions } from "./firebase"
import { httpsCallable } from 'firebase/functions';

function sendRequest(e) {
    const sendRequest = httpsCallable(functions, 'sendRequest');
    sendRequest()
}
function App() {
    return (
        <button onClick={sendRequest}>send Request</button>
    );
}
export default App;
Run Code Online (Sandbox Code Playgroud)

Firebase 功能:

const functions = require("firebase-functions");

exports.sendRequest = functions.https.onCall(async(data, context) => {
    console.log("ok")
});
Run Code Online (Sandbox Code Playgroud)

注意:(我现在正在使用模拟器)注意:(我尝试更改服务器的位置,但我不确定如何在模拟器和 v9 的前端中执行此操作)

感谢您的时间!

Fri*_*oom 0

除了降级到 firebase@8.10.0 并使用以下代码之外,我找不到更好的方法:

Firebase 初始化:

import firebase from "firebase/app";
import "firebase/functions"

const firebaseConfig = {
    apiKey: "XXXX",
    authDomain: "XXXX",
    projectId: "XXXX",
    storageBucket: "XXXX",
    messagingSenderId: "XXXX",
    appId: "XXXX",
    measurementId: "XXXX"
};

// Initialize Firebase
firebase.initializeApp(firebaseConfig);


firebase.functions().useEmulator("localhost", 5001);


export default firebase
Run Code Online (Sandbox Code Playgroud)

函数调用:

import firebase from "./firebase.js";


function sendRequest(e) {
  const sendRequest = firebase.functions().httpsCallable('sendRequest');
  sendRequest()
}
Run Code Online (Sandbox Code Playgroud)