markbind icon indicating copy to clipboard operation
markbind copied to clipboard

DeprecationWarning The `punycode` module is deprecated. Please use a userland alternative instead.

Open kaixin-hc opened this issue 1 year ago • 3 comments

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 Screenshot 2024-03-30 at 2 15 48 PM (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.

kaixin-hc avatar Mar 30 '24 06:03 kaixin-hc

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.

gerteck avatar Aug 19 '24 05:08 gerteck

This is the result for npm ls punycode:

Image

lhw-1 avatar Feb 20 '25 07:02 lhw-1

[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)

lhw-1 avatar Feb 20 '25 07:02 lhw-1