Firebase HttpScalable云函数返回未知错误

Firebase HttpScalable云函数返回未知错误,firebase,google-cloud-functions,Firebase,Google Cloud Functions,我正在尝试部署firebase云功能。从CLI部署时,出现一条成功消息,未显示任何错误 这个项目中的所有其他函数都可以正常工作,只是这个函数不能正常工作 当我尝试从我的应用程序调用此函数时,我收到一个CORS错误: POST https://{url}/volunteering-searchPeople net::ERR_FAILED 为了调试函数,我去掉了所有内容,现在只剩下以下内容: const searchPeople = functions.region('europe-west1')

我正在尝试部署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时,会出现以下消息(与此项目中所有其他函数返回的错误消息不同):

当您转到该URL时,日志中不会显示任何内容。如果我直接从GoogleCloudFunctions控制台运行测试,它确实会显示在云函数日志中,但这似乎是实际运行此函数的唯一方法

编辑:现在我尝试部署的所有新功能都会出现这种情况


Edit2:此错误仅出现在europe-west1或europe-west2中部署的功能上。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调用。

是的,我知道。CORS错误是我在应用程序中正确使用它时得到的。我尝试通过URL调用它,因为它不断返回奇怪的错误。即使您确实从URL调用函数,日志中也会出现错误,但此错误不会出现。您是否可以共享以标准方式调用函数时使用的全部代码。(云功能+客户端代码)当然,我已经完成了。我真的不认为这是一个问题,但在代码的应用程序。我们有大约80个HttpScalable函数,可以正常工作。只是我们创建的任何新产品似乎都存在此问题。是否所有产品都与
地区('europe-west1')
一起正常工作?您似乎没有在客户端声明区域。是的,我们在初始化firebase时声明了区域,因为所有功能都在europe-west1中。这是相关代码:
const REGION='europe-west1'
const fireffunctions=fire.functions(REGION)
fire.functions=()=>fireffunctions
export default fire`然后:
const functions=fire().functions
var functions = firebase.app().functions('europe-west1');
//...
var searchPeople = functions.httpsCallable('searchPeople');
searchPeople(...).then(function(result) {
  // ...
});