我是Firebase的新手,正在开发一个包含nuxtjs、Firestore、Firebase函数和Firebase托管的项目。我部署了一个名为"nuxtssr"的用于服务器端渲染的函数,它在部署后就工作了。但后来我注意到该函数的默认区域在美国。我想将该函数部署到欧洲西部,所以我删除了"nuxtssr"函数,并部署了一个新函数"nuxtssleurope",区域设置为欧洲西部。但在那之后,当我试图通过浏览器访问我的网站时,它会重定向到这个页面,要求验证自己。
https://accounts.google.com/ServiceLogin/webreauth?service=ah&passive=真&continue=https%3A%2F%2Appengine.google.com%2F_ah%2Conflogin%3Continue%3https%3A+2F%2Fus-central1-example.cloudfunctions.net%2Fnuxtssr%2F&flowName=GlifWebSignIn&flowEntry=服务登录
如您所见,重定向到我删除的函数"nuxtssr",该函数曾驻留在US Central。当我验证自己时,我会被重定向并从https://us-central1-example.cloudfunctions.net/nuxtssr/
错误:禁止
您的客户端没有从该服务器获取URL/nuxtssr/的权限。
我环顾四周,但找不到答案。是的,我检查了是否有错别字。这是我的功能:
const functions = require('firebase-functions')
const { Nuxt } = require('nuxt')
const express = require('express')
const app = express()
const config = {
dev: false
}
const nuxt = new Nuxt(config)
let isReady = false
const readyPromise = nuxt
.ready()
.then(() => {
isReady = true
})
.catch(() => {
process.exit(1)
})
async function handleRequest(req, res) {
if (!isReady) {
await readyPromise
}
res.set('Cache-Control', 'public, max-age=600, s-maxage=1200')
await nuxt.render(req, res)
}
app.get('*', handleRequest)
app.use(handleRequest)
exports.nuxtssrEurope = functions.region('europe-west1').https.onRequest(app)
我的firebase.json
{
"hosting": {
"public": "public",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{
"source": "**",
"function": "nuxtssrEurope"
}
]
}
}
如果您使用HTTP函数为Firebase Hosting提供动态内容,则必须使用us-central1。
https://firebase.google.com/docs/hosting/functions