From 7eb0612b6d9c5dfcd054190c434dada516ea3b3f Mon Sep 17 00:00:00 2001 From: Flawid DSouza Date: Fri, 22 Mar 2024 18:17:35 +0530 Subject: [PATCH] fix(electron): fetch fails with "Error: terminated" (issue seems to already be resolved at https://github.com/nodejs/undici/issues/2603) - undici is what node's fetch uses behind the scenes - updating to the latest version of undici fixes the issue Stack trace of the error I was getting when I sent a POST request to https://test.playfabapi.com/Authentication/GetEntityToken: TypeError: terminated at Fetch.onAborted (node:internal/deps/undici/undici:11442:53) at Fetch.emit (node:events:514:28) at Fetch.terminate (node:internal/deps/undici/undici:10695:14) at Fetch.resume (node:internal/deps/undici/undici:11421:36) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { [cause]: Error: incorrect header check at Zlib.zlibOnError [as onerror] (node:zlib:189:17) { errno: -3, code: 'Z_DATA_ERROR' } } --- packages/electron/package-lock.json | 35 +++++++---------------------- packages/electron/package.json | 2 +- packages/electron/src/request.js | 4 ++-- 3 files changed, 11 insertions(+), 30 deletions(-) diff --git a/packages/electron/package-lock.json b/packages/electron/package-lock.json index 761bca5c..d92713e5 100644 --- a/packages/electron/package-lock.json +++ b/packages/electron/package-lock.json @@ -12,7 +12,7 @@ "chokidar": "^3.6.0", "electron-context-menu": "^3.6.1", "electron-squirrel-startup": "^1.0.0", - "undici": "^5.28.2", + "undici": "^6.10.1", "update-electron-app": "^2.0.1" }, "devDependencies": { @@ -2278,14 +2278,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@fastify/busboy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", - "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", - "engines": { - "node": ">=14" - } - }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", @@ -9851,14 +9843,11 @@ "dev": true }, "node_modules/undici": { - "version": "5.28.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz", - "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.10.1.tgz", + "integrity": "sha512-kSzmWrOx3XBKTgPm4Tal8Hyl3yf+hzlA00SAf4goxv8LZYafKmS6gJD/7Fe5HH/DMNiFTRXvkwhLo7mUn5fuQQ==", "engines": { - "node": ">=14.0" + "node": ">=18.0" } }, "node_modules/unique-filename": { @@ -12139,11 +12128,6 @@ "strip-json-comments": "^3.1.1" } }, - "@fastify/busboy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", - "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==" - }, "@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", @@ -17857,12 +17841,9 @@ "dev": true }, "undici": { - "version": "5.28.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz", - "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==", - "requires": { - "@fastify/busboy": "^2.0.0" - } + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.10.1.tgz", + "integrity": "sha512-kSzmWrOx3XBKTgPm4Tal8Hyl3yf+hzlA00SAf4goxv8LZYafKmS6gJD/7Fe5HH/DMNiFTRXvkwhLo7mUn5fuQQ==" }, "unique-filename": { "version": "1.1.1", diff --git a/packages/electron/package.json b/packages/electron/package.json index 52f650b2..c41ffeae 100644 --- a/packages/electron/package.json +++ b/packages/electron/package.json @@ -44,7 +44,7 @@ "chokidar": "^3.6.0", "electron-context-menu": "^3.6.1", "electron-squirrel-startup": "^1.0.0", - "undici": "^5.28.2", + "undici": "^6.10.1", "update-electron-app": "^2.0.1" }, "config": { diff --git a/packages/electron/src/request.js b/packages/electron/src/request.js index 4c6381fd..d97ee81a 100644 --- a/packages/electron/src/request.js +++ b/packages/electron/src/request.js @@ -1,5 +1,5 @@ const { File } = require('node:buffer') -const { Agent } = require('undici') +const { fetch, Agent } = require('undici') const { Socket } = require('net') const dnsPromises = require('dns').promises @@ -123,7 +123,7 @@ async function handleSendRequest(data) { console.error('request failed', e) return { event: 'responseError', - eventData: e.message + eventData: e.stack + (e.cause ? '\n' + e.cause?.stack : '') } } finally { delete abortController[data.requestId]