【发布时间】:2020-07-12 09:03:18
【问题描述】:
我创建端点“/getpdf”,并将函数部署到 firebase。结果应该是浏览器中的 pdf 下载。但是当我请求它时,我得到一个 404 错误。当我在没有 firebase 的情况下(使用 express app.listen)测试同一个应用程序时,它工作正常并且 pdf 被下载。当我不使用 puppeteer 并尝试例如一个简单的 request.send("Hello World") firebase 函数时。
所有 firebase 设置都是默认设置。
如果有人可以帮助我并向我展示一种下载由 puppeteer 通过 firebase 函数创建的 pdf 文件的方法,那就太好了。
提前致谢
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);
【问题讨论】:
-
这与puppeteer无关。您只是访问了错误的 URL 来调用该函数。如果您运行本地快速服务器,它不会像它一样工作。请编辑问题以具体说明您为调用该函数所做的工作。
标签: javascript node.js firebase google-cloud-functions puppeteer