Error when using waitOn() with IPv6 address
cjk7989 opened this issue · comments
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.
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? : )