【发布时间】:2020-07-18 12:03:24
【问题描述】:
我按照 medium post 的指导将我的 nuxt 应用程序托管在 firebase 托管上。
部署完成,但是,当我访问 url 时,我收到 Cannot GET / 错误消息。如果我检查函数日志,我会看到函数完成时出现 404 错误。
这是我的functions/index.js
const functions = require('firebase-functions')
const admin = require("firebase-admin")
const { Nuxt } = require('nuxt-start')
const nuxtConfig = require('./nuxt.config.js')
admin.initializeApp()
const config = {
...nuxtConfig,
dev: false,
debug: true,
buildDir: "nuxt",
publicPath: "public",
}
const nuxt = new Nuxt(config)
exports.ssrapp = functions.https.onRequest(async (req, res) => {
await nuxt.ready()
nuxt.render(req, res)
})
这是firebase配置
{
"functions": {
"source": "functions",
"predeploy": [
"npm --prefix src run build && rm -rf functions/nuxt && cp -r src/nuxt/ functions/nuxt/ && cp src/nuxt.config.js functions/"
]
},
"hosting": {
"predeploy": [
"rm -rf public/* && mkdir -p public/_nuxt && cp -a src/nuxt/dist/client/. public/_nuxt && cp -a src/static/. public/ && cp -a public_base/. public/"
],
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"function": "ssrapp"
}
]
}
}
项目结构是这样的
/
/src
/functions
/public
/public_base
当我运行 firebase deploy 时,我确实看到 /src 的内容被复制到 /functions/nuxt。为了测试,我的 /functions/package.json 文件还包含我在 /src/package.json 文件中的所有依赖项。
我怎样才能启动并运行这个应用程序?如果您需要更多详细信息,请告诉我。
更新 #1
我尝试使用命令firebase serve --only functions,hosting -p 5004 提供托管和功能。
像这样运行服务器给了我更多的见解。具体来说,我在加载时收到此警告消息,然后在加载页面时导致实际错误消息。
WARN Module @firebase/app not found. Silently ignoring module as programatic usage detected
我没有在函数目录中安装这个包,因为我的 src 目录中也没有它。但是,在 /functions 中安装它并重新启动开发服务器后,该警告消息消失了,随之而来的是我在页面加载时遇到的错误。
我还发现了一些与 vue、vue-server-renderer 和 vue-template-compiler 没有运行相同版本有关的警告。
现在似乎一切正常!
【问题讨论】:
标签: firebase vue.js google-cloud-functions nuxt.js