好的,这是我的文件夹结构
这是函数索引文件:
const functions = require('firebase-functions')
const express = require('express')
const { Nuxt } = require('nuxt')
const app = express()
const config = {
dev: false,
buildDir: 'nuxt',
build: {
publicPath: '/'
}
}
const nuxt = new Nuxt(config)
function handleRequest (req, res) {
res.set('Cache-Control', 'public, max-age=600, s-maxage=1200')
nuxt.renderRoute('/').then(result => {
res.send(result.html)
}).catch(e => {
res.send(e)
})
}
app.get('*', handleRequest)
exports.nuxtApp = functions.https.onRequest(app)
但是访问该网址时我得到的只是"{"code":"MODULE_NOT_FOUND"}
(部署后)
我在 nuxt.config.js 中所做的只是告诉它将构建目录放入函数文件夹中的 nuxt 文件夹中
firebase.json
{
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"function": "nuxtApp"
}
]
}
}
当使用 Firebase Serve 进行本地测试时,它可以工作,但它只渲染基本 url /
而没有其他内容,而且我也没有像我的 scss 文件或应用 list 这样的静态资源。
最佳答案
经过几天的调试,我找到了解决方案。
首先,您必须扩展错误日志记录,以便可以看到堆栈跟踪:
console.error(e)
res.send(e)
我的错误是:
error#1 firebase
软件包未安装在我的函数文件夹中,因此我必须使用 npm install --save firebase
安装它在 functions
目录中。 Cloud Functions 不需要整个 firebase
包,但我的 nuxt
项目需要它来使用 firestore
error#2 您可能会收到类似 firebaseApp.firestore is not a function
的错误。这是由于 firebase 的错误导入导致您无法正常运行。我找到了这个问题的解决方案here
我更改此导入:
import firebase from 'firebase';
import 'firebase/firestore';
对此:
import firebase from '@firebase/app';
import '@firebase/firestore'
解决这两个错误后,我的 NuxtJs 应用与 Firebase Cloud Functions 配合良好。
关于firebase - Firebase 托管上的 SSR 与 GC 功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53303161/