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

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



Solution 1:[1]

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)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Matt Bierner