DeprecationWarning The `punycode` module is deprecated. Please use a userland alternative instead.
Please confirm that you have searched existing issues in the repo
Yes, I have searched the existing issues
Any related issues?
No response
Tell us about your environment
M2 Mac v13.6
MarkBind version
5.4.0
Describe the bug and the steps to reproduce it
When running markbind serve -d
(node:2418) [DEP0040] DeprecationWarning: The
punycode module is deprecated. Please use a userland alternative instead.
This is also flagged if you npm run test and read through the logs.
Expected behavior
We shouldn't get a deprecation error.
Anything else?
I don't think this is an issue with (most) of markbind things, but rather something from node. My node version is Node.js v21.7.1 . See this issue on yarn...
The History section of DEP0040 in the Node.js documentation shows that Node.js punycode has been deprecated since Node.js v7.0.0 in Oct 2016 and, starting with Node.js v21.0.0, this has been changed to a runtime deprecation (see https://github.com/nodejs/node/pull/47202). The runtime deprecation is what has caused it to now become visible.
Potential options:
- We might decide not to do anything about this, it doesn't affect functionality yet
- Switch to node LTS version, which apparently does not have this error
- ?
Aside from node, it seems punycode is also a dependency for tough-cookie and two others> Not sure if we can move away from this.
Some light investigation:
- I can reproduce this issue when using Node v21.7.3.
- For Node v20.16.0, there isn't this issue.
This issue probably will have to be addressed or taken note at some point in the future when Node is updated to Node 22 or 24, given the stance to change it to a runtime depreciation from v21 onwards.
This is the result for npm ls punycode:
[email protected] onwards has removed their psl dependency, which generates the punycode deprecation warning.
[email protected] onwards has also removed their punycode dependency, removing the deprecation warning, as per here.
The problem here seems to be eslint, which is dpeending on uri-js, whose PR for punycode deprecation is still open and is entertaining to read through.
As @gerteck suggested, updating Node directly would be a better approach than manually fixing it (though if we can manually fix it, all's good)