在Windows上使用gcloud CLI发布消息时,Firebase PubSub函数中出现JSON解析错误

drnojrws  于 2023-11-20  发布在  Windows
关注(0)|答案(1)|浏览(174)

我试图在云函数中设置一个计费PubSub侦听器,以限制计费并防止意外成本。我看了一下youtube系列,但开始使用v2实现它,如here所示。我一直在使用google cloud CLI发送一个示例JSON(在Windows上),并且遇到了这个非常烦人的JSON解析错误。(来自云函数的日志)分别为:

命令:

gcloud pubsub topics publish billing --message '{“alertDisplayName”:“name-of-budget”,“alertTimeHoldExceeded”:1,“costAmount”:100.01,“costIntervalStart”:“2019-01-01T00:00:00Z”,“alertAmount”:100,“alertAmountType”:“SPECIFIED_AMOUNT”,“currencyCode”:“USD”}'

云函数:

import { onMessagePublished } from "firebase-functions/v2/pubsub";
import * as logger from "firebase-functions/logger";
exports.onBillingAlert = onMessagePublished(
  "projects/thrilling-tales/topics/billing",
  async (event) => {
    logger.debug("onBillingAlert");
    logger.debug(event.data.message.json);
  }
);

字符串

错误

无法将Pub/Sub消息数据分析为JSON:JSON中位置1处的意外标记b

编辑:JSON有效,并遵循Firebase格式

另外,我设法记录了云函数接收到的字符串:
{价格显示名称:预算名称,警报金额超出:1,成本金额:100.01,costIntervalStart:2019-01- 01 T00:00:00 Z,价格金额:100,价格金额类型:SPECIED_AMOUNT,货币代码:USD}
奇怪的是,似乎双引号被删除了?似乎是Firebase / Google Cloud的一个错误,但我不完全确定。我也尝试切换到v1,但使用Google Cloud时出现了相同的错误。

**编辑2:**我尝试使用Google Cloud Console测试该功能,如这里所述,并完美地获得了日志。所以,如果我不得不猜测,我会说这是Google Cloud CLI for Windows中的一个错误。但奇怪的是之前没有人注意到这一点。可能在最近的更新中出现了。

pbossiut

pbossiut1#

正如Jon在评论中指出的那样:
如果你在Windows中使用它,我怀疑是命令提示符删除了双引号。
总之,如果你在Windows上,你有两个选择:
1.从Bash运行gcloud CLI命令(您可能已经安装了Git Bash),这是Linux和MacOS上的默认shell。
1.使用任何其他方式发送PubSub消息。我建议使用Google Cloud Console。

相关问题