Node.js v20.1.0下如何用require引入Blob并调用其构造函数?
解决Node.js v20中使用require引入Blob类的问题
在Node.js v20.1.0中,Blob是node:buffer模块的顶级导出成员,并非Buffer类的属性。你之前的错误在于尝试从Buffer类上访问Blob,正确的require用法如下:
正确的引入方式
方式1:解构赋值(推荐)
直接从模块中解构出Blob:
const { Blob } = require('node:buffer');
方式2:整体引入模块后访问
如果需要同时使用模块中的其他成员,可以先引入整个模块,再访问Blob属性:
const bufferModule = require('node:buffer'); // 或 const bufferModule = require('buffer'); 两者在v20中等价
使用Blob构造函数示例
// 方式1的使用示例 const { Blob } = require('node:buffer'); // 创建文本Blob const textBlob = new Blob(['这是测试文本'], { type: 'text/plain; charset=utf-8' }); console.log('文本Blob大小:', textBlob.size); // 输出13(每个中文字符占3字节) // 从Buffer创建Blob const bufferData = Buffer.from('Hello Node.js'); const bufferBlob = new Blob([bufferData], { type: 'text/plain' }); console.log('Buffer转换的Blob大小:', bufferBlob.size); // 输出12 // 方式2的使用示例 const bufferModule = require('node:buffer'); const anotherBlob = new bufferModule.Blob(['多段数据', Buffer.from('二进制数据')]); console.log('多段数据Blob大小:', anotherBlob.size); // 输出6+12=18
你之前的错误原因
你尝试的new Buffer.Blob、new Buffer.buffer.Blob等写法都是错误的,因为Blob是node:buffer模块的直接导出项,不属于Buffer类的静态属性,不能通过Buffer类去访问它。
内容的提问来源于stack exchange,提问作者Marco Faustinelli
相关产品推荐
相关产品推荐

