mathiasbynens / punycode.js

A robust Punycode converter that fully complies to RFC 3492 and RFC 5891.
https://mths.be/punycode
MIT License
1.59k stars 160 forks source link

Update README to instruct how to alias the native one (due to Node 22 annoying warning) #137

Open agalatan opened 4 weeks ago

agalatan commented 4 weeks ago
const moduleAlias = require('module-alias');
moduleAlias.addAlias('punycode', 'punycode/');

And it works. I recommend adding this in the README. I can do it, if I know you will accept it.

mathiasbynens commented 4 weeks ago

Nowadays we publish the package both as punycode and as punycode.js — so the simpler solution is to npm install punycode.js and require('punycode.js') instead. I’d welcome a README patch that mentions these options!

agalatan commented 4 weeks ago

You can't in 3rd party modules, that are deep inside your node_modules, that's my point. You have very little control on the require. And there's plenty of them.

node-fetch brings whatwg-url which:

(node:4994) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
    at node:punycode:3:9
    at BuiltinModule.compileForInternalLoader (node:internal/bootstrap/realm:399:7)
    at BuiltinModule.compileForPublicLoader (node:internal/bootstrap/realm:338:10)
    at loadBuiltinModule (node:internal/modules/helpers:108:7)
    at Function.Module._load (node:internal/modules/cjs/loader:1099:17)
    at TracingChannel.traceSync (node:diagnostics_channel:315:14)
    at wrapModuleLoad (node:internal/modules/cjs/loader:217:24)
    at Module.require (node:internal/modules/cjs/loader:1339:12)
    at require (node:internal/modules/helpers:135:16)
    at Object.<anonymous> (/Users/alingalatan/workspaces/apap/node_modules/node-fetch/node_modules/whatwg-url/lib/url-state-machine.js:2:18)

Say you got rid of node-fetch:

(node:5235) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
    at node:punycode:3:9
    at BuiltinModule.compileForInternalLoader (node:internal/bootstrap/realm:399:7)
    at BuiltinModule.compileForPublicLoader (node:internal/bootstrap/realm:338:10)
    at loadBuiltinModule (node:internal/modules/helpers:108:7)
    at Function.Module._load (node:internal/modules/cjs/loader:1099:17)
    at TracingChannel.traceSync (node:diagnostics_channel:315:14)
    at wrapModuleLoad (node:internal/modules/cjs/loader:217:24)
    at Module.require (node:internal/modules/cjs/loader:1339:12)
    at require (node:internal/modules/helpers:135:16)
    at Object.<anonymous> (/Users/alingalatan/workspaces/apap/node_modules/tr46/index.js:3:16)

Now it's tr46

It just keeps going. punycode is present in many node_modules, some not very maintained.

service-inspectech commented 3 weeks ago

Seriously good grief, who started this insanity? Getting this deprecation warning removed is near impossible from the amount of usage.

agalatan commented 3 weeks ago
CodeForcer commented 5 days ago

The amount of packages which rely on this is insane. Getting rid of this warning almost brought me to tears