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

Node.js+TypeScript中new Buffer.from报构造签名缺失的原因与修复

报错根本原因

Node.js 官方从 v10 版本开始就正式废弃了通过new Buffer()创建实例的写法,后续版本同步更新的@types/node类型定义中,Buffer.from是定义在Buffer类上的静态工具方法,本身不具备构造函数的调用签名(也就是不支持搭配new关键字使用)。

很多开发者会把v10之前的旧版new Buffer()写法,和新版的Buffer.from()静态方法搞混,误以为在Buffer.from前加new就能兼容旧逻辑。实际上这种写法本身就和Node官方的API设计不匹配,TypeScript 在类型校验时识别到调用目标没有合法的构造签名,就会抛出对应报错。这个问题和@types/node是否安装没有直接关系——哪怕依赖版本完全匹配,这种写法本身就不符合类型规则。

修复方案
  • 最直接的修正方式是去掉多余的new关键字,直接使用Buffer.from静态方法创建实例,这也是Node官方推荐的合规写法:
    const base64Data = Buffer.from(url, 'base64');
    
  • 日常开发中所有Buffer创建操作都优先使用静态方法,避免混用废弃的构造函数写法:
    • 从字符串、类数组、已有Buffer对象创建实例,统一用Buffer.from(入参, 字符编码)
    • 申请指定长度的全新内存空间,统一用Buffer.alloc(内存长度)
    • 不要对Buffer.from、Buffer.alloc这类静态方法加new,这类方法从设计层面就不支持构造调用。

内容的提问来源于stack exchange,提问作者Shashika Virajh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 21:15:05