[SOLVED] InputFile replaced by File in server SDK, breaking compatibility with Node.js 18 and lower
- 0
- Functions
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.
Recommended threads
- Worker functions stuck on "Fetched 0 fun...
Appwrite Version: 1.9.0 Bug Description: The appwrite-worker-functions container gets stuck in an infinite loop logging "Fetched 0 functions..." while scheduled...
- I am using s3 for app storage but is it ...
_APP_STORAGE_DEVICE=s3 puts everything to the s3 storage but i need to be able to keep the function builds and site in the local and not waste the cloud storage...
- Local Serverless Function Testing: Are D...
I have followed the instructions to get the CLI working, and have been able to log-in, initialize my project, and created a simple Python function, which calls ...