我正在尝试实现同步调用:
puppeteer.launch().then(browser => {
let html = `
<!DOCTYPE html>
<html>
<body>
<div>
Hello
</div>
</body>
</html>
`;
let path = 'test.png';
browser.newPage().then(page => {
page.setContent(html).then(() => {
page
.screenshot({
path: path,
clip: {
x: 50,
y: 50,
width: 100,
height: 100
},
omitBackground: true
})
.then(() => {});
});
});
browser.close().then(() => {});
});
我得到以下例外情况:
(节点:22140)UnhandledPromiseRejectionWarning:错误:协议错误(Target.CreateTarget):目标已关闭。在Promise(C:\imageServer\node_modules\puppeteer\lib\connection.js:74:56)在new Promise()在connection.send(C:\imageServer\node_modules\puppeteer\lib\connection.js:73:12)在browser._createpageincontext(C:\imageServer\node_modules\puppeteer\lib\browser.js:174:47)在browsercontext.newpage(C:\imageserver\node_modules\puppeteer\lib\helper.js:112:23)在puppeteer.launch.then.browser(C:\imageserver\imageserver.js:48:12)在process._tickCallback(internal/process/next_tick.js:68:7)(节点:22140)unhandledpromiseerejectionwarning:未处理的承诺拒绝。这个错误可能是由于抛出一个没有catch块的异步函数内部,或者是由于拒绝了一个未用.catch()处理的承诺。(拒绝ID:1)(节点:22140)[DEP0018]拒绝警告:不推荐未处理得承诺拒绝.将来,未处理的承诺拒绝将以非零退出代码终止node.js进程。
我怎么解决这个?
问题是您是在browser.newpage
之后关闭浏览器。您应该将browser.close()
移动到屏幕截图
的。
page
.screenshot({
path: path,
clip: {
x: 50,
y: 50,
width: 100,
height: 100
},
omitBackground: true
})
.then(() => browser.close());