好的,我是这一切的新手,所以任何帮助都非常感激 .
我已经设法使用Node和Express从我在主目录(server.js)中创建的文件中的Polymer构建目录中提供Polymer Starter Kit(PSK)网站:
// Node.js notation for importing packages
var express = require('express');
// Spin up a server
var app = express();
// Serve static files from the main build directory
app.use(express.static(__dirname + '/build/es5-bundled'));
// Render index.html on the main page, specify the root
app.get('/', function(req, res){
res.sendFile("index.html", {root: '.'});
});
// Tell the app to listen for requests on port 3000
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
从终端我输入'node server.js',该网站在localhost 3000上可用,一切都很好 .
我想要做的是使用节点模块Puppeteer,当网站访问者点击按钮时,从示例网页生成PDF文件 . 这是我在PSK的my-app.html文件的MyApp类中添加的代码,单击按钮时调用该代码 .
functionPDFCreate() {
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://news.ycombinator.com', { waitUntil: 'networkidle2' });
await page.pdf({ path: 'hn.pdf', format: 'A4' });
await browser.close();
})();
}
但是,上面的函数返回'require is not defined' . 我做错了吗?我是否需要以某种方式将functionPDFCreate代码放入server.js并使用Express路由?当PSK网站访问者点击按钮时,我如何在functionPDFCreate中执行代码?谢谢你尽你所能的帮助 .
1 回答
你在浏览器上下文中调用
functionPDFCreate
吗?即使使用browserify或webpack也不会像@YouneL建议的那样工作 .您应该在为您的PDF提供的Express应用中公开 endpoints :
functionPDFCreate
应如下所示:在您的浏览器应用程序中,您应该有这样的下载按钮(框架不可知示例):