为什么我会收到JavaScript Puppeteer错误:"ECONNREFUSED"?

3

我正在尝试运行一个简单的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

你安装了防火墙吗?端口打开了吗? - Bsalex
@Bsalex 没有防火墙,我也在本地运行(没有SSH) - Justin Arenson
1
没有必要隐藏你的IP地址。每个人都知道它是127.0.0.1 - D. Pardal
1个回答

2

我也遇到过类似的问题。我关闭了我的杀毒软件和防火墙,然后问题得到了解决。


这只是一个连接错误,当它无法到达URL或任何特定端口时,它会产生ECONNREFUSED错误,这是TCP连接错误。 - praveen2609
是的,@praveen2609,在我遇到那个错误的时候,我无法访问该网址,因为我的防火墙阻止了连接,不知道为什么:) - Arun
我没有使用防火墙,不确定为什么会出现那个错误。一开始我尝试使用 Puppeteer 的内置 Chromium,但是我遇到了奇怪的错误,所以我改为链接到我的 Google Chrome。你有任何想法为什么这会给我带来问题吗? - Justin Arenson
那么你的意思是说,在Google Chrome中你没有遇到奇怪的错误,但在Chromium中却出现了错误? - Arun
1
@Arun 在Chrome、Chromium和Firefox上都无法工作。我查看了此答案中提供的链接,取得了一些进展:https://dev59.com/xZTfa4cB1Zd3GeqPQ3Ta - Justin Arenson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接