我在这里找到使用Firebase Firestore和Cloud Functions的项目的解决方案。
直到昨天早上,一切正常。下午,我通读控制台,可以更新“ npm”和Node。所以我做到了,问题开始了。
首先,我遇到了著名的“ $ RESOURCE_DIR ”问题,解决了用“ functions ”替换该字符串的问题。之后,我可以在Firebase (不进行编辑)上编译和发布函数,它们可以正常工作,但是有一个(大)问题: 在Firebase平台的控制台日志中,我总是读取foreach函数,这些函数以状态超时关闭,即使它已完成 正确 。
在控制台中,我可以阅读消息
已成功发送消息。...
并且我在设备上收到通知,但是60秒钟后我收到
函数执行耗时60002毫秒,状态为:“超时”
嗯...这是我不明白如何解决问题的地方。谁能帮我吗?
这是产生错误的简单函数之一:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const db = admin.firestore();
exports.notifyProfileApproved = functions.firestore.document('/users/{user_id}')
.onUpdate((change , context) => {
const approvedBefore = change.before.data().approved;
const approvedAfter = change.after.data().approved;
if(approvedBefore === false && approvedAfter === true){
var registrationToken = change.after.data().registrationToken;
var message = {
notification: {
title: 'Approved profile',
body: 'Your profile has been approved!'
},
token : registrationToken
};
return admin.messaging().send(message)
.then((response) =>{
return console.log('Successfully sent message: ', response);
})
.catch((error) =>{
return console.log('Error sending message: ', error);
});)
}else{
return console.log('Profile edited but not approved');
}
});
这是我的系统信息:
npm:4.2.0
节点:7.10.0
火力地堡:4.0.0
2018年7月17日,我收到Firebase电子邮件,通知我我的项目已自动更新为 Blaze计划,因为Google Cloud Platform发生了更改,但我从未输入过方法。 显然没有做任何事情(仅重新启动PC,重新部署并切换到免费的 Spark Plan ),现在执行时间从50毫秒变为350毫秒,因此可以!
即使功能正常运行,控制台中也会出现一个新错误。错误是:
函数返回了未定义的预期承诺或值
功能代码与上面相同。为了解决这个问题,每次没有承诺时,我都必须返回一个值。因此,我每次都更改了
return console.log('', response);
使用
console.log('', response);
return 0;
现在一切正常!
答案 0 :(得分:0)
2018年7月17日,我收到Firebase电子邮件,通知我我的项目已自动更新为 Blaze计划,因为Google Cloud Platform发生了更改,但我从未输入过方法。 显然没有做任何事情(仅重新启动PC,重新部署并切换到免费的 Spark Plan ),现在执行时间从50毫秒变为350毫秒,因此可以!
即使功能正常运行,控制台中也会出现一个新错误。错误是:
函数返回了未定义的预期承诺或值
功能代码与上面相同。为了解决这个问题,每次没有承诺时,我都必须返回一个值。因此,我每次都更改了
return console.log('', response);
使用
console.log('', response);
return 0;
firebase lib中有一个错误,该错误已于昨天早上修复,可能是这种情况的原因。因此,如果您发现了此问题,请尝试更新Firebase。
现在一切正常!