HTTP 404 设置将 Google 的云运行连接到 Firebase Hosting 时出错



我遵循本指南https://medium.com/firebase-developers/hosting-flask-servers-on-firebase-from-scratch-c97cfb204579,我被困在firebase的./node_modules/.bin/firebase serve命令

我成功地使用云运行部署项目,并获得一个服务url,为网站工作,但当我尝试在本地提供服务时,它在静态页面上产生此错误,当运行到localhost:5000:

尝试处理代理重写时发生问题:查找云运行服务的URL错误:FirebaseError: HTTP错误:404,项目'cjcflaskapp10192021'中区域'us-central1'中类型' service '的资源'flask-fire'不存在。

这是我的firebase。json文件。

{
"hosting": {
"public": "static",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [{
"source": "**",
"run": {
"serviceId": "flask-fire"
}
}]
}
}

从文章评论中我发现有几个用户也遇到了同样的错误,其中一条评论特别提到了Firebase Hosting和Cloud Run服务之间的区域不匹配:

看起来区域选择是一个重要的步骤。因为在第一步中,我在us-west-1地区部署了服务器端代码(app.py),并且运行良好。但是在设置了firebase部署设置之后,它奇怪地在us-central1区域查找我的URL。错误日志:在试图处理代理重写时发生问题:查找云运行服务的URL错误:FirebaseError: HTTP错误:404,项目"flask-simple-pwa"中区域"us-central1"中类型为"service"的资源"flask-simple-pwa"不存在。当我检查firebase的文档时,在Location us-west1中看不到。有可能自从你写那篇文章以来,这种情况已经改变了。你能证实这一点吗?

有一个关于如何从Cloud Run提供动态内容以与Firebase Hosting一起使用的官方文档,它更完整,它解释了应该在firebase.json上设置一个与当前Cloud Run部署的区域匹配的区域。如果没有设置区域,FIrebase托管将默认为us-central1

"hosting": {
// ...
// Add the "rewrites" attribute within "hosting"
"rewrites": [{
"source": "/helloworld",
"run": {
"serviceId": "helloworld",  // "service name" (from when you deployed the container image)
"region": "us-central1"     // optional (if omitted, default is us-central1)
}
}]
}

如果这与您的Cloud Run部署不匹配,则可能导致此错误。有关Firebase支持的位置列表,您可以参考此页。

以上ErnestoC的答案是正确的。

我也有同样的问题,我想我必须选择例如欧洲-西3作为我的Flask API的区域。

谢谢!

最新更新