firebase 函数输出(日志)与模拟器输出不同

Posted

技术标签:

【中文标题】firebase 函数输出(日志)与模拟器输出不同【英文标题】:firebase functions output(logs) differ from emulator output 【发布时间】:2021-09-08 01:03:05 【问题描述】:

当我使用 firebase 模拟器在本地运行我的 firebase 函数时,它会提供一些输出(日志)。但是当我在firebase中部署它并在firebase控制台中查看日志时,它会为相同的代码提供不同的输出。 例如,我的文档中有一个字段(工作时间)。当我得到它的值时,它会给我一个时间戳,然后我使用 toDate() 方法将其转换为日期。转换不同于模拟器和实时 firebase 函数日志(相同的时间戳,相同的代码)。

这是代码

     let workTime = doc.get('workTime');

     console.log("workTime1 = "+workTime);
     workTime = workTime.toDate();
     console.log("workTime2 = "+workTime);
     workTime = workTime.toString();
     console.log("workTime3 = "+workTime);
     workTime = workTime.substring(0,21);
     console.log("workTime final = "+workTime);

模拟器中的功能日志

firebase 控制台中的函数日志

模拟器给出的日期时间是正确的。但是,实时firebase函数给出的日期是错误的。

【问题讨论】:

【参考方案1】:

这可能是因为部署的 Cloud Functions 运行在与您不同的时区。如果你特别想要印度时间,你可以试试这个:

const d = Date.now() // Current Timestamp

const timeInIndia = new Date(d + (5.5*60*60*1000)).toISOString()
// Output: "2021-06-24T19:46:44.513Z"

您可以在MDN 上阅读有关Date 对象的更多信息并自定义字符串的格式。

【讨论】:

以上是关于firebase 函数输出(日志)与模拟器输出不同的主要内容,如果未能解决你的问题,请参考以下文章

从 Flutter 应用通过本地网络连接到 Firebase 函数模拟器

log4j——如何控制不同级别的日志信息的输出?

Python 日志记录 - 不同的日志但相同的输出

多进程和输出

Firebase 从函数返回输出

Firebase 从函数返回输出