Я следовал этому среднему посту в качестве руководства по размещению моего приложения nuxt на хостинге Firebase.
Однако развертывание происходит, когда я затем посещаю url Я получаю сообщение об ошибке Cannot GET /
. Если я проверяю журналы функций, я вижу, что функция завершается с ошибкой 404.
Это мои функции / индекс. 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
, я вижу, что содержимое / sr c копируется в / functions / nuxt. Для тестирования у меня также есть файл / functions / package. json, включающий все зависимости, которые есть в моем файле / src / package. json file.
Как мне запустить и запустить это приложение? Если вам нужно больше подробностей, дайте мне знать.
Обновление # 1
Я пытался обслуживать хостинг и функции с помощью команды firebase serve --only functions,hosting -p 5004
.
Запуск сервера таким образом дал мне еще несколько идей. В частности, я получил это предупреждающее сообщение во время загрузки, которое затем привело к фактическому сообщению об ошибке при загрузке страницы.
WARN Module @firebase/app not found. Silently ignoring module as programatic usage detected
Я не установил этот пакет в каталог функций, поскольку у меня его не было в моем sr Каталог c тоже. Однако после его установки внутри / functions и перезапуска сервера dev это предупреждающее сообщение исчезло, а вместе с ним и ошибка, которую я получал при загрузке страницы.
Я также заметил несколько предупреждений, связанных с vue, vue -server-renderer и vue -template-compiler не работают с одной и той же версией.
Теперь все работает нормально!