Функции FireBase Nuxt SSR возвращают тайм-аут 504 - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь реализовать Nuxt с SSR на хостинге Firebase (используя функции Firebase), но после запуска моей функции я получаю «504 тайм-аут ожидания функции для ответа».

Моя функция Firebase:

const functions = require("firebase-functions");
const { Nuxt } = require("nuxt");
const express = require("express");
const app = express();

const config = {
    dev: false,
    buidlDir: 'src',
    build: {
        publicPath: '/'
    }
};

const nuxt = new Nuxt(config);

function handleRequest(req, res){
    console.log('handling request');
    //res.set('Cache-Control', 'public, max-age=600, s-maxage=1200')
    nuxt.renderRoute('/')
    .then(result => {
        console.log('result: ' + result.html);
        res.send(result.html);
    })
    .catch(e => {
        res.send(e);
        console.log(e);
    })
}
app.get('*', handleRequest);
exports.ssrApp = functions.https.onRequest(app);

Я также пытался использовать:

function handleRequest(req, res) {
    console.log("log3");
    res.set("Cache-Control", "public, max-age=300, s-maxage=600");
    return new Promise((resolve, reject) => {
      nuxt.render(req, res, promise => {
        promise.then(resolve).catch(reject);
      });
    });
  }

У меня также есть узел vs8 по умолчанию для моих функций, потому что я прочитал, что это может датьпроблемы.:

  "engines": {
    "node": "8"
  },

Но с тем же результатом.Моя функция запускается, но всегда отключается, кстати: у меня проблема с локальным обслуживанием и при попытке развертывания в самой Firebase.

Дайте мне знать, если вам нужна дополнительная информация / код, чтобы попытаться помочь и увидетьв чем проблема может быть.

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

У меня такая же проблема, потому что Nuxt еще не готов (* promise не определено)

Так что вы можете попробовать добавить nuxt.ready() после new Nuxt()

Пример:

const functions = require('firebase-functions');
const express = require('express');
const { Nuxt } = require('nuxt');
const config = {
  dev: false
  // Your config
};
const nuxt = new Nuxt(config);
const app = express();

nuxt.ready(); // <---------- Add this!

async function handleRequest(req, res) {
  res.set('Cache-Control', 'public, max-age=1, s-maxage=1');
  await nuxt.render(req, res);
}

app.get('*', handleRequest);
app.use(handleRequest);

exports.ssrApp = functions.https.onRequest(app);

Ссылка: https://github.com/nuxt/nuxt.js#using-nuxtjs-programmatically

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

Во-первых, если вы хотите выяснить, что вызвало это, используйте опцию отладки .

Во-вторых, если вы столкнулись с ошибкой тайм-аута, проверьте правильность пути. Если вам удастся собрать Nuxt и nuxt.render, ошибка обрабатывается Nuxt, и Nuxt показывает эту страницу ошибки . Другими словами, если вы не видите страницу ошибки Nuxt, причина может быть не связана с Nuxt.

Я также застрял 4 часа из-за ошибки тайм-аута, и я, наконец, выяснил, что причиной было содержание publicPath.

Пожалуйста, отметьте эти 2 вещи.

  1. buidlDir действителен?

Путь buildDir действителен? Вам следует убедиться, что папка .nuxt успешно развернута в облачных функциях.

  1. publicPath содержимое успешно загружено?

Собранное содержимое в .nuxt/dist должно быть загружено на хостинг Firebase. Вы должны проверить это вручную. Введите URL для адресной строки ex) https://test.firebaseapp.com/path/to/file.js

Наконец, я публикую URL мой пример проекта с использованием Nuxt и Firebase .

Я тоже застрял, как ты, и это заставило меня устать. Я очень рад, если этот ответ поможет кому-то вроде меня.

PS: при сборке Nuxt в папке functions, nuxt start не удается. Быть осторожен. В моем проекте я создаю его в корне, а при развертывании копирую. Nuxt SSR с интеграцией Firebase

...