代码之家  ›  专栏  ›  技术社区  ›  niclas_4

firebase托管上的ssr,gc函数不工作

  •  2
  • niclas_4  · 技术社区  · 6 年前

    好的,这是我的文件夹结构

    下面是函数索引文件:

    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 service进行本地测试时,它可以工作,但只呈现基url / 除此之外,我没有任何静态资产,如我的scss文件或应用程序清单。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Szabó Csaba    6 年前

    经过几天的调试,我找到了解决办法。

    首先,必须扩展错误日志记录,以便可以看到堆栈跟踪:

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

    我的错误是:

    误差1 firebase 程序包未安装在“功能”文件夹中,因此我必须使用 npm install --save firebase functions 目录。总体 火力基地 云功能不需要包,但是 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云功能上运行良好。