paralleldrive / cuid

Collision-resistant ids optimized for horizontal scaling and performance.
Other
3.42k stars 123 forks source link

Use of os.hostname() causes runtime crash on Wndows 7 #263

Closed FlyingDR closed 1 year ago

FlyingDR commented 2 years ago

Hello,

At this moment library relies on the use of os.hostname() as a part of the fingerprint generator for Node.js:

https://github.com/ericelliott/cuid/blob/fb9bb90644110474253bf8e03fbf26668cd105c0/lib/fingerprint.js#L6

This method is broken on Windows 7 due to https://github.com/nodejs/node/pull/25111 with a root cause https://github.com/libuv/libuv/issues/3260.

Since your library is quite popular and required change is very small - I would want to propose to avoid using os.hostname() on affected platform.

Example patch may look like this:

--- lib/fingerprint.js
+++ lib/fingerprint.js
@@ -3,7 +3,7 @@ var pad = require('./pad.js');
 var os = require('os'),
     padding = 2,
     pid = pad(process.pid.toString(36), padding),
-    hostname = os.hostname(),
+    hostname = os.version().indexOf('Windows 7 ') === 0 ? 'windows7' : os.hostname(),
     length = hostname.length,
     hostId = pad(hostname
       .split('') 
ericelliott commented 2 years ago

Please open a PR and link to this issue in the description.

FlyingDR commented 2 years ago

@ericelliott Pull request is ready

ericelliott commented 2 years ago

See PR comment