Argument of type 'Blob' is not assignable to parameter of type 'string | Blob'
Asked Answered
H

1

5

Just got an error:

Argument of type 'Blob' is not assignable to parameter of type 'string | Blob'.
  Type 'import("buffer").Blob' is not assignable to type 'Blob'.
    The types returned by 'stream()' are incompatible between these types.
      Type '{}' is missing the following properties from type 'ReadableStream<any>': locked, cancel, getReader, pipeThrough, and 2 more.

And can't understand what's going on. Tried to restart vscode but didn't help. Blob is not assignable to param of type Blob. ?! So Blob returned by stream is not the same with usual Blob?

This is my code

    const audioBuffer = fs.readFileSync(`./uploads/audio/${filePath}`)
    const audioBlob = new Blob([audioBuffer])
    const formData = new FormData()
    formData.append('file', audioBlob)

Error is showing when i'm trying to append file to formdata

Huntington answered 4/5, 2022 at 9:53 Comment(5)
Are you importing Blob or FormData from any module?Quirinal
@RichieBendall i'm importing Blob this way import { Blob } from 'buffer' but formdata -noHuntington
What module are you using for FormDataQuirinal
@RichieBendall i'm using nodejs so it's already in ig ?Huntington
FormData is not a built-in in nodejs. Maybe the question could be expanded to include the motivation for using FormData? There's probably a conventionally different approach to doing this in node.Osborn
C
11

You're using two different types called Blob

The one you are importing is from node:

import { Blob } from 'buffer' // this is from node

While the apis you are calling (FormData) are from the DOM and expect the Blob type defined in the DOM typings. These two Blob types are not the same

The fix is to remove the import for Blob. This should use the global Blob type defined in the DOM typings (provided you have explicitly excluded the DOM typings from your project)

Chivalrous answered 9/5, 2022 at 20:49 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.