fabian-hiller / modular-forms

The modular and type-safe form library for SolidJS, Qwik and Preact
https://modularforms.dev
MIT License
956 stars 47 forks source link

Qwik: Vite is trying to externalize packages used in formAction$ #182

Open stejs-code opened 5 months ago

stejs-code commented 5 months ago

When I try to build a production application, vite tries to externalize the "fs" package for the browser, but it shouldn't because "fs" is only used in the server-side function "formAction$". When I tried to do it in the native "routeAction$" function, everything worked as expected. This also occurs when using other node packages such as crypto, redis, etc.

npm run build
...
[plugin:vite:resolve] Module "fs" has been externalized for browser compatibility, imported by "/Users/tomstejskal/Work/qwik-modular-forms-bug/src/routes/index.tsx". See https://vitejs.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.
src/s_gw0o54lztzw.js (9:19) "read" is not exported by "__vite-browser-external", imported by "src/s_gw0o54lztzw.js".
...

Stackblitz project

fabian-hiller commented 5 months ago

This is related to a missing feature or implementation in Qwik. I will link the related issue for you later. Also, I plan to add this feature to Qwik next month.

fabian-hiller commented 5 months ago

Here is the issue: https://github.com/BuilderIO/qwik/issues/5160

fabian-hiller commented 4 months ago

You can try to wrap your code in if (isServer) {...}. This way the Qwik optimizer should be able to remove it from the client bundle. I will try investigate this issue this month.