SSR на хостинге Firebase с функциями GC не работает - PullRequest
0 голосов
/ 14 ноября 2018

Хорошо, так что это моя папка Структура

Итак, вот индексный файл функций:

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)

Но все, что я получаю при посещении URL, это "{"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 или манифест приложения.

1 Ответ

0 голосов
/ 21 января 2019

После нескольких дней отладки я нашел решение.

Сначала вы должны расширить журнал регистрации ошибок, чтобы вы могли видеть трассировку стека:

console.error(e)
res.send(e)

Myошибки были:

ошибка # 1 firebase пакет не был установлен в моей папке функций, поэтому мне пришлось установить его с npm install --save firebase в каталоге functions.Общий пакет firebase не требуется для облачных функций, однако он необходим для моего проекта nuxt для использования firestore

error # 2 Вы можете получить ошибку типа firebaseApp.firestore is not a function.Это из-за неправильного импорта firebase, чтобы вы могли работать.Я нашел решение для этой проблемы здесь

Я изменил этот импорт:

import firebase from 'firebase';
import 'firebase/firestore';

На это:

import firebase from '@firebase/app';
import '@firebase/firestore'

После решения этих двухошибки, мое приложение NuxtJs хорошо работало с Firebase Cloud Functions.

...