首页 > 解决方案 > 为什么我收到 JavaScript Puppeteer 错误:“ECONNREFUSED”?

问题描述

我正在尝试运行一个简单的测试 Puppeteer 脚本,在其中打开 Google Chrome,然后通过执行以下操作将其关闭:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch(
    {executablePath: '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe'},
    {headless: false},
    {ignoreHTTPSErrors: true});
  const page = await browser.newPage();
  await page.goto('https://www.google.com');

  await browser.close();
})().catch(error => { console.error("Something bad happend...", error); });;

但是,我得到的错误是:

Something bad happend... ErrorEvent {
  target:
   WebSocket {
     _events:
      [Object: null prototype] { open: [Function], error: [Function] },
     _eventsCount: 2,
     _maxListeners: undefined,
     readyState: 3,
     protocol: '',
     _binaryType: 'nodebuffer',
     _closeFrameReceived: false,
     _closeFrameSent: false,
     _closeMessage: '',
     _closeTimer: null,
     _closeCode: 1006,
     _extensions: {},
     _receiver: null,
     _sender: null,
     _socket: null,
     _bufferedAmount: 0,
     _isServer: false,
     _redirects: 0,
     url:
      'ws://(my IP address)/devtools/browser/ae12c970-126d-463c-af41-1ab49be03575',
     _req: null },
  type: 'error',
  message: 'connect ECONNREFUSED (my IP address)',
  error:
   { Error: connect ECONNREFUSED (my IP address)
       at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14)
     errno: 'ECONNREFUSED',
     code: 'ECONNREFUSED',
     syscall: 'connect',
     address: '(my IP address)',
     port: (my port)} }

此外,我还尝试将我的代码运行为:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({executablePath: "/mnt/c/'Program Files (x86)'/Google/Chrome/Application/chrome.exe"});
  const page = await browser.newPage();
  await page.goto('https://www.google.com');

  await browser.close();
})();

但我得到了错误:

(node:2178) UnhandledPromiseRejectionWarning: Error: Failed to launch the browser process! spawn /mnt/c/'Program Files (x86)'/Google/Chrome/Application/chrome.exe ENOENT

我对 javascript 和 puppeteer 还很陌生,所以我可能会遗漏一些明显的东西。这是自动化在线填写表格的更大努力的一部分,因此 puppeteer 似乎是要走的路。但是,如果有人对如何做到这一点有更好的建议,我们将不胜感激。有任何想法吗?


编辑 1:我下载了 Firefox 并链接到它而不是 Chrome。在任务管理器打开的情况下运行时,几秒钟后会出现一个弹出窗口。此外,Firefox 只会在该框弹出时才显示为正在运行,而不是在它之前。您可以在下面链接的视频中看到该过程:

https://vimeo.com/user119175210/review/436574888/590a38ef10

标签: javascriptnode.jsasync-awaitpuppeteer

解决方案


它也发生在我身上。我禁用了我的防病毒软件和防火墙,然后它就起作用了。


推荐阅读