如何解决将Quasar SSR vue /节点应用程序部署到Firebase托管
我尝试了许多方法来在Firebase托管上上载并运行node / vue项目,但没有成功。
我关注了official guidelines on Firecast youtube channel,但似乎我缺少了一些东西。
我的SSR模式下的vue.js应用程序在localhost上运行良好。它与基本节点/快速应用完全不同。部署到Firebase托管后,我出现了错误404页面。 (Quasar Documentation on SSR deploy)
我已经用quasar build -m ssr
构建了一个应用,该应用会生成一个新的文件夹dist/ssr
文件夹。
firebase.json
启动firebase项目的项目根目录中的 firebase init
文件包含以下行:
{
"hosting": {
"public": "dist/ssr","ignore": [
"firebase.json","**/.*","**/node_modules/**"
],"rewrites": [
{
"source": "**","function": "app"
}
]
}
}
在部署到Firebase托管之前,我尝试使用firebase serve
对其进行测试,但是当我访问localhost:5000
上的页面时,出现错误404或无内容。
有人解决吗?
解决方法
这是我想出的解决方案。
- 使用
firebase init
在项目文件夹的根目录中初始化firebase项目后,打开生成的firebase.json
:
{
"hosting": {
"public": "dist/ssr","ignore": [
"firebase.json","**/.*","**/node_modules/**"
],"rewrites": [{
"source": "**","function": "ssrapp" // <- This NAME should be the same as in /src-ssr/index.js
}]
},"functions": {
"source": "dist/ssr"
}
}
-
安装依赖项
yarn add firebase-admin firebase-functions
-
打开并编辑
/src-ssr/index.js
:
// BEGINNING OF THE FILE
const functions = require('firebase-functions') // <---- ADD FIREBASE FUNCTIONS
const
express = require('express'),compression = require('compression')
const
ssr = require('quasar-ssr'),extension = require('./extension'),app = express(),port = process.env.PORT || 3000
...
...
...
// END OF THE FILE
// COMMENT or DELETE following 3 lines of app.listen function
// app.listen(port,() => {
// console.log(`Server listening at port ${port}`)
// })
exports.ssrapp = functions.https.onRequest(app) // <- "ssrapp" name is the same as in firebase.json
-
现在使用
构建SSR应用quasar build -m ssr
-
在您的终端中,转到
./dist/ssr/
并运行yarn install
以安装节点模块。 -
最后返回到根路径“ ./”,并在使用
firebase serve
命令进行部署之前进行测试。它将照常在端口5000上可用。本地主机:5000
在浏览器中使用http://localhost:5000
将从您的公用文件夹dist/ssr
中请求名为“ index.html”的文件。根据您在此处显示的内容,该文件夹中没有index.html。我看到了“ index.js”和“ template.html”。
您要么必须执行以下任一操作:
- 安排在dist / ssr中创建index.html
- 或者,更改您的URL以找到dist / ssr下存在的HTML文件
- 或者,更改您的公用文件夹配置,以指向具有您要查找的内容的文件夹。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。