Kit de inicio de polymer con Nodo, Expreso y Titiritero

Bueno, soy un novato en todo esto, así que cualquier ayuda es muy apreciada.

Me las arreglé para usar Node y Express para servir el sitio web de Polymer Starter Kit (PSK) desde el directorio de comstackción de Polymer desde un archivo que creé en el directorio principal (server.js):

// 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!'); }); 

Desde la terminal escribo ‘node server.js’ y el sitio web está disponible en localhost 3000 y todo está bien.

Lo que quiero hacer es usar un módulo de nodo, Puppeteer, para generar un archivo PDF desde una página web de muestra cuando el visitante del sitio web hace clic en un botón. Aquí está el código que puse en la clase MyApp del archivo my-app.html de la PSK que se llama cuando se hace clic en un botón.

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

Sin embargo, la función anterior devuelve “no se define el requisito”. ¿Estoy haciendo las cosas mal? ¿Necesito tener que poner de alguna manera la función PDFCreate el código en server.js y usar el enrutamiento Express? ¿Cómo diablos ejecuto el código en functionPDFCreate cuando un visitante del sitio web de PSK hace clic en un botón? Gracias por cualquier ayuda que pueda ofrecer.

¿Está invocando functionPDFCreate en un contexto de navegador? No va a funcionar incluso con browserify o webpack como sugirió @YouneL.

Debe exponer el punto final en la aplicación Express que sirve su PDF:

 app.get('/hn', function(req, res) { functionPDFCreate().then(() => { // now file is written on the disk res.sendFile('hn.pdf', { root: '.' }); }); }); 

functionPDFCreate debería verse así:

 const puppeteer = require('puppeteer'); async function functionPDFCreate() { 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(); } 

En la aplicación de su navegador, debería tener un botón de descarga como este (ejemplo agnóstico del marco):

 Download HN PDF