Как заставить кукловода работать с функциями Firebase? - PullRequest
0 голосов
/ 31 марта 2020

Я создаю конечную точку "/ getpdf" и внедряю функцию в firebase. Результатом должна быть загрузка PDF в браузере. Но когда я запрашиваю это, я получаю 404 Ошибка. Когда я тестирую то же самое приложение без FireBase (с express app.listen), оно работает нормально, и PDF-файл загружается. Когда я не использую puppeteer и пытаюсь, например, использовать простые функции firebase request.send ("Hello World").

Все настройки firebase по умолчанию.

Было бы здорово, если кто-то может помогите мне и покажите мне способ загрузки pdf-файла, созданного кукловодом с помощью функций firebase.

заранее спасибо

const express = require('express');
const functions = require('firebase-functions');
const puppeteer = require('puppeteer');

const app = express();
app.use(function cors(req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Content-Type', 'application/pdf;charset=utf-8');
    res.header('Content-Disposition', 'attachment; filename=some_file.pdf');
    next();
});

app.get('/getpdf', async function getpdfHandler(req, res) {


    var browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] });

    try {
        const page = await browser.newPage();
        await page.setContent("<html><head></head><body><h1>HELLO WORLD!</h1></body></html>")


        const buffer = await page.pdf({
            format: 'A4',
            printBackground: true,
            margin: {
                left: '0px',
                top: '0px',
                right: '0px',
                bottom: '0px'
            }
        })

        res.type('application/pdf').send(buffer);
    } catch (e) {
        res.status(500).send(e.toString());
    }

    await browser.close();

});

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

1 Ответ

0 голосов
/ 31 марта 2020

Я допустил ошибку в комбинации express и firebase. Если я делаю это без express, то это работает. На этом мой вопрос заканчивается:

const functions = require('firebase-functions');
const puppeteer = require('puppeteer');

exports.getpdf = functions.https.onRequest(async (req, res) => {


    var browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] });

    try {

        const page = await browser.newPage();
        await page.setContent("<html><head></head><body><h1>HELLO WORLD!</h1></body></html>")


        const buffer = await page.pdf({
            format: 'A4',
            printBackground: true,
            margin: {
                left: '0px',
                top: '0px',
                right: '0px',
                bottom: '0px'
            }
        })


        res.header('Content-Type', 'application/pdf;charset=utf-8');
        res.header('Content-Disposition', 'attachment; filename=some_file.pdf');
        res.type('application/pdf').send(buffer);




    } catch (e) {
        res.status(500).send(e.toString());
    }

       await browser.close();

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...