Node.js 为什么木偶演员不能在azure webapp上工作

Node.js 为什么木偶演员不能在azure webapp上工作,node.js,screenshot,puppeteer,azure-web-app-service,takesscreenshot,Node.js,Screenshot,Puppeteer,Azure Web App Service,Takesscreenshot,我使用了Nodejs,并尝试拍摄给定URL的屏幕截图。它在本地运行得非常好,但部署到Azure后,在创建Puppeter时会出现问题 代码 有关详细信息,请参阅SO标签信息,如下所示 Puppeter是一个节点库,它提供了一个高级API来通过DevTools协议控制headless Chrome或Chrome。它也可以配置为使用全无头镀铬或镀铬 无论铬或铬无头或无头,它们都需要GDI支持。但是,在Windows上的Azure应用程序服务上,它与冲突,如下图所示 而PhantomJS/Seleni

我使用了Nodejs,并尝试拍摄给定URL的屏幕截图。它在本地运行得非常好,但部署到Azure后,在创建Puppeter时会出现问题

代码


有关详细信息,请参阅SO标签信息,如下所示

Puppeter是一个节点库,它提供了一个高级API来通过DevTools协议控制headless Chrome或Chrome。它也可以配置为使用全无头镀铬或镀铬

无论铬或铬无头或无头,它们都需要GDI支持。但是,在Windows上的Azure应用程序服务上,它与冲突,如下图所示

而PhantomJS/Selenium等其他框架也会受到它的限制,见下文

因此,您不能在Windows上的Azure WebApp中使用Puppeter。解决方案是在Linux上使用Azure VM或Azure WebApp。本质上,此问题与其他SO线程重复

希望能有帮助

将puppeter.launch替换为puppeter.connect

const browser = await puppeteer.connect({  browserWSEndpoint: 'wss://chrome.browserless.io/'

})

我相信它在linux上的Azure WebApp上也不起作用。如果这对你来说是个好消息。您是否愿意分享有关您在linux上的设置的更多详细信息?可以确认这在linux上也不起作用,正如@MarkoPrcać所建议的。Browserless.io非常酷,每天可免费发送少量请求,然后提供基于使用情况的定价选项。对于我的用例来说,这是一个很好的解决方案。
const browser = await puppeteer.connect({  browserWSEndpoint: 'wss://chrome.browserless.io/'