当前位置: 首页 > 知识库问答 >
问题:

由于JSON错误,无法部署Firebase Cloud函数。stringify()错误

仰翔
2023-03-14

我试图为我的react本机应用程序部署一个云功能,当数据库中出现新节点时,它会向用户发送通知。为此,我使用了Expo的Push API,如下所示:https://docs . Expo . io/versions/v 32 . 0 . 0/guides/Push-notifications,并遵循以下教程:https://www.youtube.com/watch?v=R2D6J10fhA4

我已经能够很好地获取设备令牌并将它们保存到我的数据库中。但是,由于以下错误,我无法将该函数部署到我的数据库中:

31:27分析错误:意外的标记,应为,

它在“body:JSON”行中抛出了一个致命错误。stringify(消息)‘,就好像它希望在‘string’后面有一个逗号。我非常不确定如何从这里开始,并且似乎找不到任何解决这个具体问题的帖子。

感谢任何帮助和/或建议!谢谢你。

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

let fetch = require('node-fetch');

const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.sendPushNotification = functions.database.ref('Omicron-Pi')
.onCreate(event => {
  const root = event.data.ref.root;
  let messages = [];

  root.child('Omicron-Pi/profiles').once('value').then((snapshot) => {
    snapshot.forEach((childSnapshot) => {
      let pushToken = childSnapshot.val().pushToken;
        if (pushToken) {
          messages.push({
            to: pushToken,
            body: 'New Node added'
          });
        }
    });
    return Promise.all(messages);
  }).then(messages => {
    fetch('https://exp.host/--/api/v2/push/send', [
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(messages)
    ]);
  });
});

共有1个答案

宋斌
2023-03-14

< code>fetch()的第二个参数是一个具有初始化属性的对象,但是您传递的是一个数组。

要修复它,请使用{}而不是[]

fetch('https://exp.host/--/api/v2/push/send', {
  method: 'POST',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(messages)
});

要了解更多信息,请阅读有关如何在 MDN 上使用 fetch 的文档。

 类似资料:
  • 我在过去多次部署Firebase功能。由于某些原因,最近(大约2-3天)我经常在部署时出错。我使用windows来释放代码。当我尝试在我的Linux系统和Mac系统中设置相同的项目时,部署工作正常。从Windows环境发布可能存在的问题。 以下是部署时遇到的问题。 ! 功能[付款(us-central1)]:部署错误。加载用户代码时函数失败。这可能是由于用户代码中的错误造成的。错误消息:错误:请检

  • 我已经使用firebase云函数一段时间了,今天在代码中修复了一个小错误,在尝试部署时出现了以下错误。我取消了该更改,并尝试使用上次提交的稳定更改再次部署,但仍然是相同的错误。有什么解决办法吗?PS:这是一个typescript项目,我用tsc编译它。

  • 使用在嵌套目录中部署带有处理程序的lambda时遇到问题。 我执行以下步骤: > 包装: sam包——模板。yaml——打包的输出模板文件。yaml--s3铲斗 创建我在下一步中使用的packaged.yaml。 部署: AWS部署模板文件 /Users/localuser/Do/learn-sam/dynamo-stream-lambda/packaged.yaml 错误 云信息/SAM模板 目

  • 我已经设置和快速服务器上运行Firebase云功能。现在,我试图使用CLI使用“Firebase部署-仅函数”将其部署到Firebase,但每次都失败,说有一个意外的令牌。我怀疑在index.js文件中使用异步箭头函数有问题,但我不确定,我也需要它们来完成我的项目。 这是索引。js文件: 以下是我在尝试运行firebase deploy(仅限函数)时遇到的错误: ==部署到“homunculus-

  • 我收到 400 个错误的 AJAX 发布方法请求。我正在后端使用Spring数据Rest服务。以下是我在JS前端的代码 尽管我正在序列化 JSON 数据。我仍然收到400错误请求错误。如果后端的某些代码中断或发送到服务器的请求出现问题,则会出现此错误吗? JAVA实现

  • 我正在尝试通过GitLab CI/CD将云函数从GitLab中的存储库部署到Google云函数。我得到了标题和下面的错误。 错误:(gcloud.functions.deploy)ResponseError:status=[403],code=[probled],message=[Permission'cloudfunctions.functions.get'denied on resource'