node-formidable / formidable

The most used, flexible, fast and streaming parser for multipart form data. Supports uploading to serverless environments, AWS S3, Azure, GCP or the filesystem. Used in production.
MIT License
7k stars 680 forks source link

Build giving the error in `cloudflare-pages` preset #970

Open prvashisht opened 4 months ago

prvashisht commented 4 months ago

Support plan

Context

What are you trying to achieve or the steps to reproduce?

I'm using formidable in my Nuxt 3 project, which is deployed on Cloudflare Pages. Within the project, I have an API in the server directory, and in the API I'm parsing a submitted form. When I create a new form variable with const form = formidable({ multiples: true });, the API throws an error and the initialisation fails with the following error. (It's only breaking in the Cloudflare preset, it works okay locally)

What was the result you got?

A promise rejection was handled asynchronously. This warning occurs when attaching a catch handler to a promise after it rejected. (rejection #1)
[nuxt] [request error] [unhandled] [500] Cannot convert object to primitive value
  at Object.resolve3 [as resolve] (file:.//private/var/folders/2h/krvh_c095nb21j_dkpb8sh1r0000gn/T/tmp-20415-pkuO0PQhrAsi/4ygo2ja85q9.js:15432:46)  
  at new Zn3 (file:.//private/var/folders/2h/krvh_c095nb21j_dkpb8sh1r0000gn/T/tmp-20415-pkuO0PQhrAsi/4ygo2ja85q9.js:15884:25)  
  at formidable$1 (file:.//private/var/folders/2h/krvh_c095nb21j_dkpb8sh1r0000gn/T/tmp-20415-pkuO0PQhrAsi/4ygo2ja85q9.js:16083:31)  
  at file:.//private/var/folders/2h/krvh_c095nb21j_dkpb8sh1r0000gn/T/tmp-20415-pkuO0PQhrAsi/4ygo2ja85q9.js:16095:18  
  at file:.//private/var/folders/2h/krvh_c095nb21j_dkpb8sh1r0000gn/T/tmp-20415-pkuO0PQhrAsi/4ygo2ja85q9.js:19817:31  
  at async Object.handler (file:.//private/var/folders/2h/krvh_c095nb21j_dkpb8sh1r0000gn/T/tmp-20415-pkuO0PQhrAsi/4ygo2ja85q9.js:17656:21)  
  at async file:.//private/var/folders/2h/krvh_c095nb21j_dkpb8sh1r0000gn/T/tmp-20415-pkuO0PQhrAsi/4ygo2ja85q9.js:17733:7  
  at async file:.//private/var/folders/2h/krvh_c095nb21j_dkpb8sh1r0000gn/T/tmp-20415-pkuO0PQhrAsi/4ygo2ja85q9.js:20677:25  
  at async jsonError (file:.//private/var/folders/2h/krvh_c095nb21j_dkpb8sh1r0000gn/T/tmp-20415-pkuO0PQhrAsi/4ygo2ja85q9.js:20912:12)

Now, since I can only see this while running a build preview locally with the Cloudflare preset, the file names are hashed.

What result did you expect?

For the form to be parsed and work as it does locally.

GrosSacASac commented 4 months ago

What does the cloudfare preset do ?

tunnckoCore commented 3 months ago

@prvashisht Cloudflare Pages? Or Workers?

I think it might be that formidable isn't passed "Node Request", while other environments are having the already standard web api Request. They are slightly different. In some frameworks there are context.request and context.raw.request.

Not sure for Nuxt and presets, not familiar with the Vue ecosystem at all.