Node.js 如何让木偶演员只需加载一个网页?
我不能让木偶演员做任何事。我只是想让它显示google.com,但我甚至无法让它这么做。这是我的密码:Node.js 如何让木偶演员只需加载一个网页?,node.js,windows,puppeteer,Node.js,Windows,Puppeteer,我不能让木偶演员做任何事。我只是想让它显示google.com,但我甚至无法让它这么做。这是我的密码: console.log('Loading puppeteer...'); const puppeteer = require('puppeteer'); async function test() { console.log('Launching browser...'); const browser = await puppeteer.launch({headless: f
console.log('Loading puppeteer...');
const puppeteer = require('puppeteer');
async function test() {
console.log('Launching browser...');
const browser = await puppeteer.launch({headless: false});
console.log('Creating new page...');
const page = await browser.newPage();
console.log('Requesting url...');
await page.goto('https://www.google.com');
console.log('Closing browser...');
await browser.close();
}
test().catch(e=>{console.log(e)});
每次我尝试做任何事都会崩溃
然后我得到一个超时错误:
Loading puppeteer...
Launching browser...
TimeoutError: waiting for target failed: timeout 30000ms exceeded
...
...
几个星期以来我一直在寻找解决办法。这件事不再起作用了吗?在研究了木偶演员的一个众所周知的问题后,这里有一些关于木偶演员超时问题的更多信息
launch()有两个部分可能导致超时问题。一个是转到超时,另一个是等待超时。由于我不知道是什么原因导致了您的具体问题,我将为您提供两种可能的解决方案
可能的问题#1:Goto超时。
我将直接引用发布此解决方案的人rudiedirkx的话:
在我的例子中,goto超时是由于永久加载阻塞资源(js或css)造成的。这永远不会触发页面的加载或domcontentloaded。木偶戏里的一只虫子,但不管怎样
我的解决方案(最后!)是做Lighthouse在其驱动程序中所做的事情:一个Promise.race()用于自定义的“timeout”-ish。我使用的较短版本:
可能的问题2:Waitfor超时。
或者,您可以尝试解决dealeros给出的等待超时问题,在args
中添加--enable blink features=HTMLImports
:
browser = await puppeteer.launch({
//headless: false,
'args': [
'--enable-blink-features=HTMLImports'
]
});
如果两者都不起作用
如果这两种解决方案都不起作用,我建议浏览该线程,找到更多人们建议的解决方案,看看是否可以缩小问题的范围。使用此代码生成一些控制台日志,并查看是否可以找到问题所在:
page
.on('console', message =>
console.log(`${message.type().substr(0, 3).toUpperCase()} ${message.text()}`))
.on('pageerror', ({ message }) => console.log(message))
.on('response', response =>
console.log(`${response.status()} ${response.url()}`))
.on('requestfailed', request =>
console.log(`${request.failure().errorText} ${request.url()}`));
这些选项都为我解决了问题:
pkill-o铬
rm-rf节点模块
npm安装
谢谢我将查看并分享我的结果。对我来说,在Windows10上,精确的脚本与Puppeter 4.0.1和Node 12.16.1完美结合。你确定木偶演员已经安装好了吗?你能给出你正在使用的确切版本吗?你能尝试重新安装npm吗?在我看来,你安装的木偶演员的铬版本不匹配:
page
.on('console', message =>
console.log(`${message.type().substr(0, 3).toUpperCase()} ${message.text()}`))
.on('pageerror', ({ message }) => console.log(message))
.on('response', response =>
console.log(`${response.status()} ${response.url()}`))
.on('requestfailed', request =>
console.log(`${request.failure().errorText} ${request.url()}`));