npm 中已弃用 punycode - 我应该用什么替换它?

Ben*_*ros 33 punycode node.js npm yarnpkg angular

punycode在我的 Angular 项目中使用 npm 模块。VsCode 告诉我它已被弃用,并且https://nodejs.org/api/punycode.html#punycode_punycode 确认:

Node.js 中捆绑的 punycode 模块版本已被弃用。在 Node.js 的未来主要版本中,该模块将被删除。当前依赖 punycode 模块的用户应改用用户区提供的 Punycode.js 模块。

建议切换到“用户提供的”模块。那是什么?

有一个指向https://github.com/mathiasbynens/punycode.js的链接,我尝试将其包含在我的 package.json 中而不是“punycode”中,但出现了相同的错误。

Wes*_*lva 21

最近我遇到了同样的问题。

我强烈建议您使用该节点的 LTS(长期支持)版本。

您可以在此处验证版本: https: //nodejs.org/en

当我写这个答案时,节点 LTS 版本是 20.10.0

那么在你的命令行中你应该执行:

$nvm install 20.10.0
$nvm use 20.10.0
Run Code Online (Sandbox Code Playgroud)

这解决了问题,因为使您可以使用经过最多测试和批准的版本。

如果我使用具有最新功能的版本(实际上是21.5.0),我将面临此处报告的问题。github上有一个开放的问题可以顺便解决一下。

您可以在这里查看更多详细信息:https ://github.com/yarnpkg/yarn/issues/9005

  • “降级节点”并不是面向未来的解决方案。[纱线](https://github.com/yarnpkg/yarn/pull/9009/commits/859d7398b753d22e0e74c3b07ba88c1a566691ae)和[pngwin](https://github.com/coigne/pngwin/commit/9995ebce9c2ce53f5899a6e613063586第5743章来自 NPM 的 punycode](https://www.npmjs.com/package/punycode): `const punycode = require('punycode/');` (2认同)

小智 0

第一的:

npm install punycode --save
Run Code Online (Sandbox Code Playgroud)

第二:

然后node_modules进入目录 tr46 > index.js

// Replace this:
const punycode = require('punycode');
// With this:
const punycode = require('punycode/');
Run Code Online (Sandbox Code Playgroud)

  • 切勿编辑 node_modules 中的任何内容 (29认同)
  • 这就是为什么“永远不要编辑 node_modules 中的任何内容” (10认同)
  • 您可以在“node_modules”中编辑内容,但请注意,下次运行“npm install”时,您的编辑将会消失,除非您还通过“patch-package”之类的内容保存它们。但是,直接编辑依赖项几乎从来都不是正确的选择,除非您遇到无法更新或无法维护的内容。 (5认同)
  • 这是一种解决方法还是建议的方法? (4认同)