我已经向Google部署了一个next.js应用程序,并且正在使用函数和托管。
最近,我试图把所有的东西都转移到northamerica-northeast1
地区。我重新部署了所有函数,将.region("northamerica-northeast1")
放在所有函数的开头,如这里所示。这成功地更新了我所有功能的位置。
但是,我也使用一个函数来服务我的next.js应用程序:
const server = functions.https
.onRequest((request, response) => {
return app.prepare().then(() => handle(request, response));
});
我重写了这个函数的所有URL:
"hosting": {
"target": "webapp",
"public": "public",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{
"source": "**",
"function": "nextjs-server"
}
]
},
这都是Google上的标准next.js,我已经做了2+多年了。但是,当我使用以下方法将函数移到新区域时:
const server = functions
.region("northamerica-northeast1")
.https
.onRequest((request, response) => {
return app.prepare().then(() => handle(request, response));
});
看来重写不再有效了。这个函数被更新了,但是当我访问这个站点时,我得到了404。然后,当我将函数移回默认区域时(通过删除.region()),它再次正常工作。
我尝试了三个目前的项目,同样的事情。
最后,我尝试创建一个全新的项目,并将其部署到northamerica-northeast
区域(与以前一样),并将函数与it...so中的区域代码一起运行--我的项目除了northamerica-northeast1
之外从未托管过,而且仍然失败。但是,通过删除该区域,重写重新开始正常工作,我可以看到该网站。即使整个站点的其余部分位于northamerica-northeast1
区域,而这一个服务器函数移动到默认区域时,也是如此。
我相信这是谷歌云重写中的一个缺陷吗?或者说,在这个地区,是否有什么东西是我遗漏的,或者某个文档说重写不可用?
发布于 2021-01-04 15:05:19
https://stackoverflow.com/questions/65570649
复制