如何让木偶师使用Firebase功能



我创建端点"/getpdf",并将函数部署到firebase。结果应该是在浏览器中下载pdf。但当我请求它时,我会得到一个404错误。当我在没有firebase的情况下测试同一个应用程序(使用express app.learn(时,它运行良好,pdf也会被下载。当我不使用puppeteer时,例如尝试一个简单的request.send("Hello World"(firebase函数就可以了。

所有firebase设置都是默认设置。

如果有人能帮助我,并向我展示一种通过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);

我在express和firebase的组合中犯了一个错误。如果我不用快递就可以了。这就完成了我的问题:

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();
});

相关内容

  • 没有找到相关文章

最新更新