Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何让木偶演员只需加载一个网页?_Node.js_Windows_Puppeteer - Fatal编程技术网

Node.js 如何让木偶演员只需加载一个网页?

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

我不能让木偶演员做任何事。我只是想让它显示google.com,但我甚至无法让它这么做。这是我的密码:

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铬
  • 重新安装节点包(如果步骤1没有帮助)

  • 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()}`));