Add duplex parameter to a streaming request
Attempt to solve the following error in the browser's console when trying to make the request: [error] download and save failed: TypeError: Failed to construct 'Request': The `duplex` member must be specified for a request with a streaming body
This commit is contained in:
parent
9eab93cfdf
commit
2a425b0f9b
1 changed files with 17 additions and 1 deletions
|
@ -996,10 +996,26 @@ class ExportService {
|
|||
// TODO(MR): Productionalize
|
||||
if (isDevBuild) {
|
||||
console.log({ a: "will send req", updatedFileStream });
|
||||
// The duplex parameter needs to be set to 'half' when
|
||||
// streaming requests.
|
||||
//
|
||||
// Currently browsers, and specifically in our case,
|
||||
// since this code runs only within our desktop
|
||||
// (Electron) app, Chromium, don't support 'full' duplex
|
||||
// mode (i.e. streaming both the request and the
|
||||
// response).
|
||||
//
|
||||
// https://developer.chrome.com/docs/capabilities/web-apis/fetch-streaming-requests
|
||||
//
|
||||
// In another twist, the TypeScript libdom.d.ts does not
|
||||
// include the "duplex" parameter, so we need to cast to
|
||||
// get TypeScript to let this code through. e.g. see
|
||||
// https://github.com/node-fetch/node-fetch/issues/1769
|
||||
const req = new Request("stream://foo", {
|
||||
method: "POST",
|
||||
body: updatedFileStream,
|
||||
});
|
||||
duplex: "half",
|
||||
} as unknown as RequestInit);
|
||||
const res = await fetch(req);
|
||||
console.log({ a: "got res", res });
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue