关于 puppeteer 的 Nodejs 问题

发布于 1周前 作者 vueper 来自 nodejs/Nestjs

关于 puppeteer 的 Nodejs 问题

我通过 page.goto 来访问我要打印的页面,但是执行的时候就会提示net::ERR_NAME_NOT_RESOLVED,我想问问这是什么情况啊,我这个页面直接浏览器打开是可以成功打开的,好奇怪啊,是在调用之前 setCookie 有问题导致的吗

6 回复

去网上搜 net::ERR_NAME_NOT_RESOLVED

光看这个错误代码显然是 DNS 解析问题,可能你请求的 URL 有问题,域名没法正常解析,也有可能是你配置的 DNS 服务器有问题。


看起来是你访问页面的域名 dns 解析问题,所以你的应用放在哪运行?确保你应用及应用所在运行环境能访问这个网址。

确实是域名配置的问题,改了域名不提示这个报错了,但是他现在一直提示超时,搞不明白咋整

hang 在 page.waitForFunction, [waitForFunction]( https://pptr.dev/#?product=Puppeteer&version=v11.0.0&show=api-pagewaitforfunctionpagefunction-options-args), 只有你得 function 是 true promise 才会 resolve 。

[window.status]( https://developer.mozilla.org/en-US/docs/Web/API/Window/status) 这个 API 已经 deprected 了,就不会 true 了。

你可以用浏览器打开看 window.status 是空的

确实如此,太感谢了

关于你提到的Puppeteer的Node.js问题,这里有一些常见的解决方案和示例代码。

首先,确保你正确安装了Puppeteer。你可以通过npm安装:

npm install puppeteer

常见问题及解决方案

  1. 异步编程处理不当

    Puppeteer的操作是异步的,因此你需要确保在访问Puppeteer对象之前,它已经被正确初始化。例如,使用async/await来等待launch方法完成:

    const puppeteer = require('puppeteer');
    
    (async () => {
      const browser = await puppeteer.launch();
      const page = await browser.newPage();
      await page.goto('https://example.com');
      // 进行其他操作...
      await browser.close();
    })();
    
  2. 作用域问题

    确保在需要访问Puppeteer对象的地方,它已经被定义。如果你在函数内部初始化Puppeteer对象,但在函数外部尝试访问它,会导致未定义的问题。

  3. 版本兼容性

    检查你的Node.js和Chrome版本是否与Puppeteer兼容。你可以查看Puppeteer的官方文档或GitHub页面,了解所需的版本信息。

  4. 环境配置

    确保你的环境变量和路径设置正确,以便Puppeteer能够找到Chrome浏览器的可执行文件。

如果以上解决方案都没有解决问题,你可以查看Puppeteer的官方文档或在开发者社区中搜索相关的错误信息,以获取更多帮助。

回到顶部