NodeJS “FirebaseError:从客户端代码调用onCall云函数时使用“internal

5sxhfpxr  于 2023-06-05  发布在  Node.js
关注(0)|答案(1)|浏览(252)

我有一个React Native - Expo应用程序,最近我使用firebase-functions/v2/https onCall()实现了一个基本的云函数,如下所示:

exports.addmessage = onCall((request) => {
    logger.info("Request: " + request.data.text);
    return {text: text}
});

我部署了这个函数,它的部署看起来是正确的。然后我尝试从App组件中的客户端代码调用此函数,如下所示:

export default function App() {
  const addmessage = httpsCallable(functions, 'addmessage');
  
  function callFunction() {
    addmessage({ text: "Hello world!" })
      .then((result) => {
        console.log("Function called");
        console.log(result);
      }).catch((error) => {
        console.log("Function call failed");
        console.log(error)
      });
  }

  return (
    <SafeAreaProvider>
      <SafeAreaView style={styles.container}>
        <Button title="Call cloud function" onPress={() => callFunction()}></Button>
        <StatusBar style="auto" />
      </SafeAreaView>
    </SafeAreaProvider>
  );
}

当我点击按钮调用云函数时,我得到“Function call failed”和“[FirebaseError:内部]"。这是调用可调用函数的正确方法吗?我已经检查了firebase门户中函数的记录器,但没有错误记录在那里。我可以做些什么来找到/解决这个问题?我已经用onRequest-function进行了测试,它可以像预期的那样工作。
我使用“Firebase”:“9.22.1”作为project-package.json中的依赖项(尽管我也用“firebase”进行了测试:“9.20.0”)在我的函数package.json中,我有这些依赖项:“firebase-admin”:“^11.8.0”,“firebase-functions”:“^4.3.1”。

izkcnapc

izkcnapc1#

我没试过你的云函数

exports.addmessage = onCall((request) => {
    logger.info("Request: " + request.data.text);
    return {text: text}
});

你实际上没有声明text变量。
下面的代码应该可以做到这一点:

exports.addmessage = onCall((request) => {
    const text = request.data.text;
    logger.info("Request: " + text);
    return {text: text}   // Or return { text }
});

我还建议通过以下文档更好地管理Cloud Function中的错误日志:在CF和客户端中。

相关问题