我正在用我的firebase主机设置一个重定向(重写),这样我就可以调用一个从google cloud run here运行的api。
我试过将重写字符串从"/api/**"
(应该捕获到www.example.com的所有内容并将其发送到函数)。删除index.html并切换到"**"
以捕获包括index在内的所有路径。到目前为止没有任何效果。page.com/api/**and send that to the function). deleted the index.html and swapped to "**"
to capture ALL paths including index. Nothing has worked so far.
我的主机firebase.json是这样设置的,有什么问题吗?
{
"hosting": {
"public": "dist/public",
"ignore": ["firebase.json", "**.*", "**/node_modules/**"],
"rewrites": [
{
"source": "**",
"run": {
"serviceId": "next-js-base-api",
"region": "us-central1"
}
}
]
}
}
我也尝试过正常的重定向到另一个页面,这不起作用,什么决定了firebase.json设置何时开始传播和工作?
更新
我尝试运行托管模拟器并使用修改后的重写"source": "/api/**"
,结果如下:导航到/api返回非崩溃(不重定向),浏览器中的输出为cannot GET /api
导航到api/wkapi(api端点捕获的子目录)在浏览器中返回unexpected error
,
Error: Unable to find a matching rewriter for {"source":"/api/**","run":{"serviceId":"next-js-base-api","region":"us-central1"}}
在控制台中。
4条答案
按热度按时间6ovsh4lw1#
确保通过运行以下命令更新到最新版本的Firebase CLI:
这将使您能够重写到云运行示例,就像您正在尝试做的那样。
j2qf4p5b2#
实际上,我刚刚运行了这个程序,查看了部署的cloud-run helloworld容器的日志,发现custom-domain/helloworld实际上是Map到container-domain/helloworld,而不是简单地Map到container-domain/。为了解决这个问题,我必须在我的原始Node.js程序中添加一个额外的app.get规则:
然后调用custom-domain/helloworld就可以了。
aelbi1ox3#
如果以上所有答案都不能帮助你,那么对我有效的解决方法是:
删除生成的index.html文件后,它可以通过重写来运行我的云运行容器。
mwngjboj4#
在我的例子中,原因是在firebase.json文件中拼错了
function
,即: