-
-
Notifications
You must be signed in to change notification settings - Fork 32.2k
Closed
Labels
streamIssues and PRs related to the stream subsystem.Issues and PRs related to the stream subsystem.
Description
Version
v20.5.1
Platform
Ubuntu 20.04, Microsoft Windows NT 10.0.19045.0 x64
Subsystem
No response
What steps will reproduce the bug?
I tried the same as what is in the doc.
Lines 525 to 581 in 41a3a1d
```mjs | |
import { | |
open, | |
} from 'node:fs/promises'; | |
import { | |
ReadableStream, | |
} from 'node:stream/web'; | |
import { Buffer } from 'node:buffer'; | |
class Source { | |
type = 'bytes'; | |
autoAllocateChunkSize = 1024; | |
async start(controller) { | |
this.file = await open(new URL(import.meta.url)); | |
this.controller = controller; | |
} | |
async pull(controller) { | |
const view = controller.byobRequest?.view; | |
const { | |
bytesRead, | |
} = await this.file.read({ | |
buffer: view, | |
offset: view.byteOffset, | |
length: view.byteLength, | |
}); | |
if (bytesRead === 0) { | |
await this.file.close(); | |
this.controller.close(); | |
} | |
controller.byobRequest.respond(bytesRead); | |
} | |
} | |
const stream = new ReadableStream(new Source()); | |
async function read(stream) { | |
const reader = stream.getReader({ mode: 'byob' }); | |
const chunks = []; | |
let result; | |
do { | |
result = await reader.read(Buffer.alloc(100)); | |
if (result.value !== undefined) | |
chunks.push(Buffer.from(result.value)); | |
} while (!result.done); | |
return Buffer.concat(chunks); | |
} | |
const data = await read(stream); | |
console.log(Buffer.from(data).toString()); | |
``` |
How often does it reproduce? Is there a required condition?
always
What is the expected behavior? Why is that the expected behavior?
Since Buffer() was not used in the code, the warning should not occur.
What do you see instead?
D:\nodejs_example> node --experimental-modules index.mjs
(node:29340) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
import {
open,
} from 'node:fs/promises';
import {
ReadableStream,
} from 'node:stream/web';
import { Buffer } from 'node:buffer';
class Source {
type = 'bytes';
autoAllocateChunkSize = 1024;
async start(controller) {
this.file = await open(new URL(import.meta.url));
this.controller = controller;
}
async pull(controller) {
const view = controller.byobRequest?.view;
const {
bytesRead,
} = await this.file.read({
buffer: view,
offset: view.byteOffset,
length: view.byteLength,
});
if (bytesRead === 0) {
await this.file.close();
this.controller.close();
}
controller.byobRequest.respond(bytesRead);
}
}
const stream = new ReadableStream(new Source());
async function read(stream) {
const reader = stream.getReader({ mode: 'byob' });
const chunks = [];
let result;
do {
result = await reader.read(Buffer.alloc(100));
if (result.value !== undefined)
chunks.push(Buffer.from(result.value));
} while (!result.done);
return Buffer.concat(chunks);
}
const data = await read(stream);
console.log(Buffer.from(data).toString());
Additional information
No response
msikma
Metadata
Metadata
Assignees
Labels
streamIssues and PRs related to the stream subsystem.Issues and PRs related to the stream subsystem.