jeffbski / wait-on

wait-on is a cross-platform command line utility and Node.js API which will wait for files, ports, sockets, and http(s) resources to become available

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Error when using waitOn() with IPv6 address

cjk7989 opened this issue · comments

commented

Hi, I'm wondering if wait-on does not support ipv6, because I got an error when I tried to use it with an ipv6 address. Here are the details:

I opened an ipv6 address: [::1]:4200, but when I run the code:

waitOn({ 
  resources: ["tcp:[::1]:4200"],
  delay: 1000,
  interval: 100,
  simultaneous: 1,
  timeout: 3000,
  tcpTimeout: 1000,
  window: 1000,
  strictSSL: false,
  verbose: false,
})

I got an error with message:

wait-on(18440) exiting with error TypeError: object null is not iterable (cannot read property Symbol(Symbol.iterator))
at tcpExists (C:\myTsProject\node_modules\wait-on\lib\wait-on.js:342:61)

But when I use psping or browser, "[::1]:4200" can be connected.

I find the code in line 342 of wait-on.js is:

const [, , /* full, hostWithColon */ hostMatched, port] = HOST_PORT_RE.exec(tcpPath);

Where

const HOST_PORT_RE = /^(([^:]*):)?(\d+)$/;

and tcpPath in my case maybe "tcp:[::1]:4200" or "[::1]:4200", both of them indeed do not match this regular expression.

Some additional information:

  • Node.js version: 18.16
  • wait-on version: 6.0.1
  • OS: Windows 11

Thank you for your help. I appreciate your work on this library.

commented

When I changed the resource to “tcp:localhost:4200”, waitOn() worked fine. So I guess it’s not that waitOn() does not support ipv6, it’s just that the regex check in line 342 of wait-on.js does not handle ipv6 format addresses. Maybe this can be fixed in a future update. Am I right? : )