我正在尝试部署一个firebase云函数。从CLI进行部署时,出现一条成功消息,并且没有显示任何错误。
这个项目中的所有其他函数都可以正常工作,只是这个函数不能。
当我试图从我的应用程序调用此函数时,我收到了一个CORS错误:
POST https://{url}/volunteering-searchPeople net::ERR_FAILED
为了调试这个功能,我把所有东西都去掉了,现在只有这个:
const searchPeople = functions.region('europe-west1').https.onCall(async (data, context) => {
const {
managedBy,
helpPage,
contactStatus,
needs,
postcode,
noVolunteers
} = data;
return Promise.resolve('done');
})
从这里的应用程序调用:
const testFunction = functions.httpsCallable('volunteering-testFunction')
testFunction().then((result) => console.log({result}))
当它在本地主机上模拟运行时,它就能工作。当你直接转到URL时,会有以下消息(这与该项目中所有其他函数返回的错误消息不同(:
Error: Forbidden
Your client does not have permission to get URL /volunteering-searchPeople from this server.
当您转到该URL时,日志中不会显示任何内容。如果我直接从谷歌云功能控制台运行测试,它确实会显示在云功能日志中,但这似乎是真正运行该功能的唯一方法。
编辑:我尝试部署的所有新功能现在都会发生这种情况
Edit2:此错误仅适用于部署在europe-west1或europe-west 2中的函数。us-central1中的新功能运行良好
您通常不应该通过URL调用可调用云函数,而是使用您正在使用的客户端SDK的专用方法(JS、Android、iOS等(,如此处文档中所述。
例如,您可以使用JS SDK执行以下操作:
var functions = firebase.app().functions('europe-west1');
//...
var searchPeople = functions.httpsCallable('searchPeople');
searchPeople(...).then(function(result) {
// ...
});
另一方面,HTTPS云函数将通过URL调用。