在Firebase控制台中记录JSON对象

13

有没有人知道如何以可读的方式记录JSON数据到Firebase日志中? 当使用:

console.log(req.body)

或者

console.log(`${req.body.event}: ${JSON.stringify(req.body, null, 2)}`);

它会将其打印在多行中,如下图所示。

我的Firebase云功能运行在Node 10上。

输入图像描述


很奇怪 - 一个 console.log 语句应该在在线控制台中输出一个日志。你能展示你的整个代码吗? - ultraGentle
另外,如果上面的账户ID不仅仅是一个虚拟账户,您可能需要考虑对其进行隐私保护。 - ultraGentle
大家好,谢谢。我编辑了帖子,这样有帮助吗? - FriedrichCoen
2
不熟悉Firebase,但如果您想以友好的方式使用console.log()输出数据,也许console.table可以帮助以可读的方式显示数据。 - ROOT
4
我也遇到了这个问题,在我们更新 Firebase functions 到 Node 10 后出现的。现在仅记录一个 POJO 就会按对象中的“行数”输出一行。 - regretoverflow
2
更新到 Node 10 后也遇到了这个问题,而 Node 8 则可以完美记录日志。 - alfiepoleon
4个回答

3

2

我可以确认我也遇到了同样的问题,自从更新到Node 10版本后,JSON对象被打印成多行。

目前的解决方案是引入这个依赖:

require('firebase-functions/lib/logger/compat');

只需将此代码放在您的函数代码顶部即可。
您可以查看官方问题以获取更新:https://github.com/firebase/firebase-functions/issues/612

1
这种多行的表现可能是因为您明确告诉JSON.stringify()添加换行和缩进。最后一个参数(2)告诉JSON格式化程序,您想要每个缩进级别2个空格的“结构化”(又名“漂亮”)输出。如果您删除最后一个参数(您可以放心删除“null”),那么您应该会看到好旧的长字符串 :)

1

2
这似乎与节点版本有关。自从从v8更新到v10以来,我一直看到这个问题。 - Kyle Goslan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接