fix decoding issue for request data chunks

This commit is contained in:
Nriver 2023-12-14 11:10:13 +08:00
parent df85a5eee4
commit 30c3c10524

View File

@ -63,10 +63,15 @@ function exec(opts) {
} }
let responseStr = ''; let responseStr = '';
let chunks = [];
response.on('data', chunk => responseStr += chunk); response.on('data', chunk => chunks.push(chunk));
response.on('end', () => { response.on('end', () => {
// use Buffer instead of string concatenation to avoid implicit decoding for each chunk
// decode the entire data chunks explicitly as utf-8
responseStr = Buffer.concat(chunks).toString('utf-8')
if ([200, 201, 204].includes(response.statusCode)) { if ([200, 201, 204].includes(response.statusCode)) {
try { try {
const jsonObj = responseStr.trim() ? JSON.parse(responseStr) : null; const jsonObj = responseStr.trim() ? JSON.parse(responseStr) : null;