好的,这是我的文件夹结构
这是功能索引文件:
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文件或应用清单一样的静态资产。
答案 0 :(得分:1)
经过几天的调试,我找到了解决方案。
首先,您必须扩展错误日志记录,以便可以看到堆栈跟踪:
console.error(e)
res.send(e)
我的错误是:
错误#1 firebase
软件包未安装在我的functions文件夹中,因此我必须使用npm install --save firebase
在functions
目录中进行安装。 Cloud Functions不需要整个firebase
软件包,但是我的nuxt
项目需要firestore
使用该软件包
错误#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中运行良好。