modular-forms icon indicating copy to clipboard operation
modular-forms copied to clipboard

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

Open stejs-code opened this issue 1 year ago • 3 comments

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

stejs-code avatar Feb 17 '24 22:02 stejs-code

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 avatar Feb 17 '24 22:02 fabian-hiller

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

fabian-hiller avatar Feb 18 '24 03:02 fabian-hiller

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.

fabian-hiller avatar Mar 02 '24 20:03 fabian-hiller