moleculerjs / moleculer

:rocket: Progressive microservices framework for Node.js
https://moleculer.services/
MIT License
6.14k stars 582 forks source link

With NodeJS 22 : DeprecationWarning: The `punycode` module is deprecated #1292

Closed tafel closed 2 months ago

tafel commented 3 months ago

Prerequisites

Please answer the following questions for yourself before submitting an issue.

Current Behavior

When running moleculer on NodeJS 22, moleculer starts as usual but a warning is displayed in the console.

Expected Behavior

No deprecated message should appear.

Failure Information

(node:22) [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:398:7)
    at BuiltinModule.compileForPublicLoader (node:internal/bootstrap/realm:337:10)
    at loadBuiltinModule (node:internal/modules/helpers:96:7)
    at Module._load (node:internal/modules/cjs/loader:1037:17)
    at Module.require (node:internal/modules/cjs/loader:1271:19)
    at require (node:internal/modules/helpers:123:16)
    at Object.<anonymous> (/usr/local/lib/node_modules/moleculer/node_modules/whatwg-url/lib/url-state-machine.js:2:18)
    at Module._compile (node:internal/modules/cjs/loader:1434:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1518:10)
[2024-06-13T12:02:43.441Z] INFO  3c4ac096601e-22/BROKER: Moleculer v0.14.33 is starting...

This is because of node-fetch@2 (https://github.com/node-fetch/node-fetch/issues/1797). Moleculer repository loads "node-fetch": "^2.6.7" Should it be possible to upgrade to node-fetch@3?

It is quite some changes (https://github.com/node-fetch/node-fetch/blob/main/docs/v3-UPGRADE-GUIDE.md), but it is maybe not as hard as it seems to implement this in moleculer?

Steps to Reproduce

node@3c4ac096601e:/app/packages$ node --version
v22.2.0
node@3c4ac096601e:/app/packages$ npm --version
10.7.0
node@3c4ac096601e:/app/packages$ npm install moleculer
node@3c4ac096601e:/app/packages$ NODE_OPTIONS='--trace-deprecation' moleculer-runner --repl

Context

icebob commented 2 months ago

The problem is that node-fetch in v3 changed to ESM module, so we can't upgrade it in 0.14. In 0.15 we have dropped the node-fetch, beta version released, you can try it.