Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase云函数出现内部错误_Javascript_React Native_Firebase Realtime Database_Google Cloud Functions - Fatal编程技术网

Javascript Firebase云函数出现内部错误

Javascript Firebase云函数出现内部错误,javascript,react-native,firebase-realtime-database,google-cloud-functions,Javascript,React Native,Firebase Realtime Database,Google Cloud Functions,Firebase云函数中有myFunction: const myFunctionHandler = (params, context) => { return new Promise((resolve, reject) => { return admin .database() .ref("checks") .push(params) .then((r) => resolve(r))

Firebase云函数中有myFunction:

const myFunctionHandler = (params, context) => {
  return new Promise((resolve, reject) => {
    return admin
      .database()
      .ref("checks")
      .push(params)
      .then((r) => resolve(r))
      .catch((e) => reject(e));
};
exports.myFunction = functions.https.onCall(myFunctionHandler);
这是我在客户机上的称呼:

  functions()
    .httpsCallable('myFunction')({
      myParam: true,
    })
    .then(resp => console.log(resp))
    .catch(e => console.log(e));
在Firebase云函数中,以下是日志:

Function execution started
Unhandled error RangeError: Maximum call stack size exceeded
at Function.mapValues (/workspace/node_modules/lodash/lodash.js:13426:7)
at encode (/workspace/node_modules/firebase-functions/lib/providers/https.js:183:18)
at encode (/workspace/node_modules/firebase-functions/lib/providers/https.js:157:16)
at /workspace/node_modules/lodash/lodash.js:13427:38
at /workspace/node_modules/lodash/lodash.js:4925:15
at baseForOwn (/workspace/node_modules/lodash/lodash.js:2990:24)
at baseForOwn (/workspace/node_modules/lodash/lodash.js:2990:24)
at Function.mapValues (/workspace/node_modules/lodash/lodash.js:13426:7)
Function execution took 2438 ms, finished with status code: 500
2438ms后,数据正确输入Firebase实时数据库,但响应为
[错误:内部]
。为什么?

[编辑]

我尝试在客户端复制相同的数据库推送功能,如下所示:

database()
      .ref()
      .child(`checks`)
      .push(params)
      .then(r => resolve(r))
      .catch(e => reject(e));
我的回答是:
https://myApp.firebaseio.com/checks/-MHABiZl5lsDBLSP22-3
这是一个积极的反馈,告诉我信息存储正确

我从云功能中看到了相同的积极响应,但我得到的是
[错误:内部]


接收(来自Firebase云函数中的函数)错误作为响应我的想法是信息存储不正确。

可调用函数向客户端发送JSON负载。这就是他们能发送的全部信息。当您从可调用函数返回承诺时,它将尝试序列化从该承诺解析的对象。您尝试发送的对象(a的结果是a)太复杂,无法序列化,因此失败。它包含自引用链接,这会导致您看到的错误


您的问题仍然没有明确指出JSON负载应该是什么。您必须弄清楚这是什么,然后只将该对象发送给客户端。很明显,这不可能是一个很好的参考。如果您需要将其转换为某些内容,请找出如何转换它,然后改为发送该对象。

相同的函数会从以太客户端或服务器发出不同的响应。 在FCF中,我只是避免使用它来解析推送的响应。 在客户机中,它返回谷歌文档中描述的https链接


还要确保localhost:5001节点服务器未运行。在我的情况下,我被干扰了。

这里没有足够的信息。您到底希望向客户发送什么?在发送之前,您是否尝试过将要发送的内容记录下来?如果您查看
push()
返回的内容,可能会有所帮助。
push()。在FCF上返回此错误。我希望将http链接作为响应返回(作为您共享的链接),而不是返回内部错误。参数不是问题所在,因为我在数据库中看到它们…您希望向客户端发送什么?我会提供此信息,因为我没有看到引发异常的代码区域。我在这里看到了一般性错误:@DougStevenson I aspect具有此处所述的http链接作为响应()。有效负载中的JSON是
{myParam:true}
,并且该有效负载正确存储在实时Firebase中。响应给出了该错误。谢谢,我将尝试阅读更多关于NablerReference的信息,感谢您的支持和视频。真是太棒了!