Firebase重定向到已删除的功能

时间:2020-03-11 19:00:47

标签: firebase google-cloud-functions

我是Firebase的新手,并且正在使用nuxtjs,Firestore,Firebase函数和Firebase托管进行项目。我部署了一个执行服务器端渲染的功能,名为“ nuxtssr”,该功能在部署后可以正常工作。但是后来我注意到该功能的默认区域在美国。我想将该功能部署到西欧,所以我删除了“ nuxtssr”功能,并部署了一个新功能“ nuxtssrEurope”,其区域设置为西欧。但是之后,当我尝试通过浏览器访问我的网站时,它会重定向到该页面,要求验证自己。

https://accounts.google.com/ServiceLogin/webreauth?service=ah&passive=true&continue=https%3A%2F%2Fappengine.google.com%2F_ah%2Fconflogin%3Fcontinue%3Dhttps%3A%2F%2Fus-central1-example.cloudfunctions.net%2Fnuxtssr%2F&flowName=GlifWebSignIn&flowEntry=ServiceLogin

如您所见,重定向到我删除的函数“ nuxtssr”,该函数以前位于美国中部。验证身份后,我将重定向并从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" } ] } }

1 个答案:

答案 0 :(得分:0)

显然。 Cloud Functions仅支持在us-central1上为Firebase托管提供动态内容,因此您不能将其他服务器用于Cloud Functions。我将Cloud Function更改回us-central1后,现在可以使用了。

如果您使用HTTP功能为Firebase托管提供动态内容,则必须使用us-central1。

https://firebase.google.com/docs/hosting/functions