You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Buffer.from时抛出Unknown encoding: base64url错误求助

解决Node.js 12中Buffer.from不支持base64url编码的问题

问题原因

Node.js 12.x版本不支持将base64url作为Buffer.from()的编码参数,这个特性是从Node.js v14.13.0才正式引入的,所以你在v12.22.12环境下调用会抛出编码未知的错误。另外你安装的buffer@3.6.4是核心Buffer的旧版polyfill,同样不支持base64url编码。

解决方案

方案1:手动转换base64url到标准base64

base64url是base64的变体,仅将+替换为-、/替换为_,并去掉末尾的=。可以手动转换后再用Buffer.from()处理:

// 把base64url格式转成标准base64
const base64Str = publicKey
  .replace(/-/g, '+')
  .replace(/_/g, '/')
  .padEnd(publicKey.length + (4 - publicKey.length % 4) % 4, '=');

publicKey = Buffer.from(base64Str, 'base64');

方案2:升级Node.js版本

直接将Node.js升级到v14.13.0及以上,原生支持base64url编码参数,无需修改代码即可正常运行Buffer.from(publicKey, 'base64url')。

方案3:修改web-push库的代码

如果报错来自web-push的vapid-helper.js文件,可找到对应行(第107行),替换成上述手动转换的逻辑,绕过原生Buffer的编码限制。

内容的提问来源于stack exchange,提问作者Gaspar Liboreiro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:13:11