Skip to content

大家好,我是农村程序员,独立开发者,行业观察员,前端之虎陈随易。

  • 关注公众号:陈随易,获取最新文章推送 (很多内容只在公众号发布)
  • 个人网站 1️⃣:https://chensuiyi.me
  • 个人网站 2️⃣:https://me.yicode.tech
  • 加入交流群,公众号或者个人网站联系我即可

我会在这里分享关于 编程技术独立开发行业资讯思考感悟 等内容。

所有文章都是古法手打,经过了深度思考和总结,不含 AI 添加剂,请放心食用,一起灵魂交流。

如果本文能给你提供启发或帮助,欢迎动动小手指,一键三连 (点赞评论转发),给我一些支持和鼓励,谢谢。


腾讯云静态存储 cos-nodejs-sdk-v5 包终于要升级了,解决了一个用着没事,但是看着碍眼的问题,下文细说。

这次的版本更新,距离上次已经 10 个月时间。

若不是依赖的 request 包出现警告提示,很多人都进行了反馈,估计这个更新要等更久,原因是这样的。

punycode 是 npm 包 request 的依赖,它的作用如下所示:

JavaScript
// punycode.decode
punycode.decode('maana-pta'); // 'mañana'
punycode.decode('--dqo34k'); // '☃-⌘'
// punycode.encode
punycode.encode('mañana'); // 'maana-pta'
punycode.encode('☃-⌘'); // '--dqo34k'
// punycode.toASCII
punycode.toASCII('mañana.com');  // 'xn--maana-pta.com'
punycode.toASCII('☃-⌘.com');   // 'xn----dqo34k.com'
punycode.toASCII('example.com'); // 'example.com'
// punycode.toUnicode
punycode.toUnicode('xn--maana-pta.com'); // 'mañana.com'
punycode.toUnicode('xn----dqo34k.com');  // '☃-⌘.com'
punycode.toUnicode('example.com');       // 'example.com'

简单来说就是,Punycode 是一种编码方法,用于将 Unicode 字符串 (如国际化域名) 转换为 ASCII 字符串,以便兼容 DNS 系统。

DNS 系统最初设计时只支持 ASCII 字符 (A-Z, a-z, 0-9, 以及一些特殊符号),但随着全球化的发展,很多国家的域名使用了非 ASCII 字符 (如中文、阿拉伯文等)。

为了兼容这些域名,Punycode 作为一种标准被提出。

Punycode 是一种专门的编码规则,它可以将非 ASCII 字符串转换为符合 ASCII 标准的字符串。

以国际化域名 (IDN) 为例:

– 中文域名 你好.com 会被转换为 xn--6qq79v.comxn-- 是 Punycode 编码的前缀,表示后面的部分是编码的域名。

大概就是这么个意思,但是它在 Node.jsv7.0.0 版本就已经被标记为废弃了,现在如果要使用呢,需要安装第三方 punycode 包即可 npm install punycode

也就是因为这个原因,所以才会出现使用 cos-nodejs-sdk-v5 的时候,在命令行出现一个用着没问题,但是看着有问题的警告。

那么本次 v2.16.0 版本,最主要的就是修复这个问题,并把 Node.js 的最低要求版本升级到了 v9.0.0

从更新内容来看,本次更新是相对克制和稳定的,并没有进行破坏性变更,如果对控制台的警告也看不顺眼的朋友们,可以准备着手更新了。

何以解忧,唯有代码。不忘初心,方得始终。