无法读取未定义的属性“以前”[重复]

Posted

技术标签:

【中文标题】无法读取未定义的属性“以前”[重复]【英文标题】:Cannot read property 'previous' of undefined [duplicate] 【发布时间】:2020-04-22 21:08:38 【问题描述】:

firebase 中的函数向我抛出此错误:

TypeError: Cannot read property 'previous' of undefined
at exports.sendNotifications.functions.database.ref.onWrite (/srv/index.js:5:19)
at cloudFunction (/srv/node_modules/firebase-functions/lib/cloud-functions.js:131:23)
at /worker/worker.js:825:24
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:229:7)

我的代码是这样的:

exports.sendNotifications=functions.database.ref('/notifications/notificationId').onWrite((event)=>
if(event.data.previous.val())
  return;

if(!event.data.exists())
  return;

)

知道如何解决这个问题吗?

【问题讨论】:

因为 event.data 未定义。可能是因为您正在获取一个不存在的通知。 您似乎在使用旧教程或其他东西。 Cloud Functions 的签名已更改(很久以前)。有关如何更新的信息,请参阅***.com/questions/51782831/…(这是我search for the error message时弹出的第一个问题)。 【参考方案1】:

这通常意味着event 始终没有属性data。所以你需要先检查:

if('data' in event && event.data.previous.val())
  return;

【讨论】:

【参考方案2】:

发生这种情况是因为事件内部没有数据,因此请先检查。其中一种方法是:

exports.sendNotifications=functions.database.ref('/notifications/notificationId').onWrite((event)=>
if(!event.data)
  return;

if(event.data.previous.val())
  return;

if(!event.data.exists())
  return;

)

【讨论】:

以上是关于无法读取未定义的属性“以前”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:无法读取未定义()离子3的属性'toastController' [重复]

使用 $http 时无法读取未定义的属性“获取”[重复]

错误:无法读取未定义的属性“模糊”[重复]

ReactJS TypeError:无法读取未定义的属性“setState”[重复]

无法读取未定义的属性“机器人”[重复]

“TypeError:无法读取未定义的属性” [重复]