Javascript 如何在同步执行时处理Puppeter异常

Javascript 如何在同步执行时处理Puppeter异常,javascript,node.js,es6-promise,puppeteer,Javascript,Node.js,Es6 Promise,Puppeteer,我正在尝试实现同步呼叫: puppeteer.launch().then(browser => { let html = ` <!DOCTYPE html> <html> <body> <div> Hello </div>

我正在尝试实现同步呼叫:

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(() => {});
        });
puppeter.launch()。然后(浏览器=>{
让html=`
你好
`;
let path='test.png';
browser.newPage()。然后(第=>{
page.setContent(html)。然后(()=>{
页
.截图({
路径:路径,
剪辑:{
x:50,
y:50,
宽度:100,
身高:100
},
背景:对
})
.然后(()=>{});
});
});
browser.close().then(()=>{});
});
我得到以下例外情况:

(节点:22140)未处理的PromisejectionWarning:错误:协议错误(Target.createTarget):目标已关闭。 at Promise(C:\ImageServer\node\u modules\puppeter\lib\Connection.js:74:56) 在新的承诺() 在Connection.send(C:\ImageServer\node\u modules\puppeter\lib\Connection.js:73:12) 在浏览器上。\u createPageInContext(C:\ImageServer\node\u modules\Puppeter\lib\Browser.js:174:47) 在BrowserContext.newPage(C:\ImageServer\node\u modules\puppeter\lib\Browser.js:367:26) 在Browser.newPage(C:\ImageServer\node\u modules\puppeter\lib\Browser.js:166:33) 在浏览器上。(C:\ImageServer\node\u modules\puppeter\lib\helper.js:112:23) 在puppeter.launch.then.browser(C:\ImageServer\ImageServer.js:48:12) 在进程中。_tick回调(内部/process/next_tick.js:68:7) (节点:22140)未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。(拒绝id:1) (节点:22140)[DEP0018]弃用警告:未处理的承诺拒绝已弃用。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程


如何解决此问题?

问题是您在
browser.newPage
之后立即关闭浏览器。您应该将
browser.close()
移动到
屏幕上,然后将
屏幕截图移动到

页面
.截图({
路径:路径,
剪辑:{
x:50,
y:50,
宽度:100,
身高:100
},
背景:对
})
。然后(()=>browser.close());

您没有处理拒绝承诺的问题。链
。捕捉
到你的
。然后
承诺链捕捉你的错误:谢谢。。我需要温习一下我的js承诺假设;)