Skip to content
Back

[SOLVED] InputFile replaced by File in server SDK, breaking compatibility with Node.js 18 and lower

  • 0
  • Functions
memoonlite
27 Jan, 2025, 12:54

Hello everyone! 👋🏻

Recently I upgraded my cloud function from version 12.0.1 to the latest version, version 14.2.0. InputFile was removed and replaced by File. This caused some problem. Below I share the solution:

In my cloud function I have a function:

await storage.createFile(photoBucketId, 'unique()', new InputFile(Readable.from(buffer), "photo.jpg", Buffer.byteLength(buffer)));

A breaking change in at least version 14.2.0 is the removal of InputFile. It is replaced by File. This is what the new function call look likes after removing InputFile.

await storage.createFile(photoBucketId, 'unique()', new File([buffer], "photo.jpg");

File isn't supported by Node.js lower than version 22. It results in a ReferenceError: File is not defined error. If you want to stay on version 18 then you can use the web-file-polyfill package:

https://www.npmjs.com/package/web-file-polyfill

Just add it to your package.json, import it and you're done: import { File, Blob } from "web-file-polyfill. I tested this on Appwrite Cloud and it works as expected, as far as I can tell.

TL;DR
Upgraded cloud function from v12.0.1 to v14.2.0 causing compatibility issue as `InputFile` was replaced by `File`. Solution: For Node.js versions lower than 22, use the `web-file-polyfill` package, import `{ File, Blob }` and update the function call accordingly.
Reply

Reply to this thread by joining our Discord

Reply on Discord

Need support?

Join our Discord

Get community support by joining our Discord server.

Join Discord

Get premium support

Join Appwrite Pro and get email support from our team.

Learn more