Node.js: response body chunk can now be a Uint8Array.

Starting from Node.js 15.0.0 the chunk parameter of the response.write()
can be a Uint8Array.

This closes #870 issue on GitHub.
This commit is contained in:
Andrei Zeliankou
2023-09-26 12:49:39 +01:00
parent 0f630c3f60
commit e0c2675774
4 changed files with 14 additions and 3 deletions

View File

@@ -243,8 +243,11 @@ ServerResponse.prototype._writeBody = function(chunk, encoding, callback) {
}
if (chunk) {
if (typeof chunk !== 'string' && !(chunk instanceof Buffer)) {
throw new TypeError('First argument must be a string or Buffer');
if (typeof chunk !== 'string' && !(chunk instanceof Buffer ||
chunk instanceof Uint8Array)) {
throw new TypeError(
'First argument must be a string, Buffer, ' +
'or Uint8Array');
}
if (typeof chunk === 'string') {

View File

@@ -0,0 +1,4 @@
require('http').createServer(function (req, res) {
res.writeHead(200, {'Content-Length': 5, 'Content-Type': 'text/plain'})
.end(new Uint8Array(Buffer.from('array', 'utf8')));
}).listen(7080);

View File

@@ -1,5 +1,5 @@
require('http').createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'})
.end(new Buffer([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]));
.end(Buffer.from('buffer', 'utf8'));
}).listen(7080);

View File

@@ -149,6 +149,10 @@ def test_node_application_write_buffer():
assert client.get()['body'] == 'buffer', 'write buffer'
def test_node_application_write_array():
client.load('write_array')
assert client.get()['body'] == 'array', 'write array'
def test_node_application_write_callback(temp_dir):
client.load('write_callback')