Node.js “木偶演员投掷”;协议错误(IO.read):目标已关闭;时不时
这让我发疯。。。我有以下代码:Node.js “木偶演员投掷”;协议错误(IO.read):目标已关闭;时不时,node.js,puppeteer,Node.js,Puppeteer,这让我发疯。。。我有以下代码: // Load a PUG template const template = await loadTemplateRoute(pdfProps.layout); // Generate HTML const html = template(pdfProps); // requirement for puppeteer to work locally, if using locally const executablePath = process.env.E
// Load a PUG template
const template = await loadTemplateRoute(pdfProps.layout);
// Generate HTML
const html = template(pdfProps);
// requirement for puppeteer to work locally, if using locally
const executablePath = process.env.EXECUTABLE_PATH || await chromium.executablePath;
console.log('executable path', executablePath);
// These are needed to run on WSL
chromium.args.push(['--disable-gpu', '--single-process']);
console.log('1');
const browser = await puppeteer.launch({
args: chromium.args,
defaultViewport: chromium.defaultViewport,
executablePath,
headless: true,
ignoreHTTPSErrors: true
});
console.log('2');
const page = await browser.newPage();
console.log('3');
// eslint-disable-next-line quote-props
await page.setContent(html, { 'waitUntil': 'networkidle2' });
console.log('4');
// here we can insert customizable features in the future using JSONB stored formats
const pdf = await page.pdf({
format: 'A4',
printBackground: true,
margin: {
top: '1cm',
right: '1cm',
bottom: '1cm',
left: '1cm'
}
});
await page.close();
console.log('5');
await browser.close();
console.log('6');
return pdf;
运行这个程序可以得到我想要的PDF,但是十次只能得到一次。其他时候,我在console.log('4')
之后得到:
我在WSL Ubuntu上运行它,但在Mac上运行它也会出现错误(但不太频繁)
如果我在两次尝试之间等待5分钟,效果似乎会更好,但列出的进程(ps-ef
)没有显示任何正在运行/挂起的内容
编辑:注销/node\u modules/puppeter core/lib/Connection.js:182:56
中发生的事情,给出:
send(); Page.printToPDF {
transferMode: 'ReturnAsStream',
landscape: false,
displayHeaderFooter: false,
headerTemplate: '',
footerTemplate: '',
printBackground: true,
scale: 1,
paperWidth: 8.27,
paperHeight: 11.7,
marginTop: 0.39375,
marginBottom: 0.39375,
marginLeft: 0.39375,
marginRight: 0.39375,
pageRanges: '',
preferCSSPageSize: false
}
send(); IO.read { handle: '1' }
send(); IO.read { handle: '1' }
Page.printToPDF
工作正常,第一个IO.read
也工作正常,而第二个IO.read
抛出错误…在尝试了一系列操作后,我开始怀疑外部源,因为它在使用简单模板时工作正常
修改模板以不加载任何外部CSS,而是将所有CSS放在
标记中,并将所有图像“预解析”到base64(
)它不再发生
显然,一些资源正在困扰着我……在尝试了一系列事情之后,我开始怀疑外部资源,因为它在简单的模板中工作得很好 修改模板以不加载任何外部CSS,而是将所有CSS放在
标记中,并将所有图像“预解析”到base64(
)它不再发生
很明显,一些资源正在困扰着我
Navigation failed because browser has disconnected!
at CDPSession.<anonymous> (.../node_modules/puppeteer-core/lib/LifecycleWatcher.js:46:107)
at CDPSession.emit (events.js:223:5)
at CDPSession.EventEmitter.emit (domain.js:475:20)
at CDPSession._onClosed (.../node_modules/puppeteer-core/lib/Connection.js:215:10)
at Connection._onClose (.../node_modules/puppeteer-core/lib/Connection.js:138:15)
at WebSocket.<anonymous> (.../node_modules/puppeteer-core/lib/WebSocketTransport.js:48:22)
at WebSocket.onClose (.../node_modules/puppeteer-core/node_modules/ws/lib/event-target.js:124:16)
at WebSocket.emit (events.js:223:5)
at WebSocket.EventEmitter.emit (domain.js:475:20)
at WebSocket.emitClose (.../node_modules/puppeteer-core/node_modules/ws/lib/websocket.js:191:10)
at Socket.socketOnClose (.../node_modules/puppeteer-core/node_modules/ws/lib/websocket.js:850:15)
at Socket.emit (events.js:223:5)
at Socket.EventEmitter.emit (domain.js:475:20)
at TCP.<anonymous> (net.js:664:12)
send(); Page.printToPDF {
transferMode: 'ReturnAsStream',
landscape: false,
displayHeaderFooter: false,
headerTemplate: '',
footerTemplate: '',
printBackground: true,
scale: 1,
paperWidth: 8.27,
paperHeight: 11.7,
marginTop: 0.39375,
marginBottom: 0.39375,
marginLeft: 0.39375,
marginRight: 0.39375,
pageRanges: '',
preferCSSPageSize: false
}
send(); IO.read { handle: '1' }
send(); IO.read { handle: '1' }