Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How does Vite compile JSX in development?

I’m new to backend. I want to make a server serves up a React app, without using Vite (or CRA). On front-end I’m using React, on back-end I’m using nodemon + express.

I’m confused about how JSX got understood on the browser.

This is my index.html:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

<body>
  <div id="root"></div>
  <script type="module" src="/src/main.jsx"></script>
</body>

When I spin up my dev server I get this error:

Disallowed MIME type

How come when I’m using Vite, the .jsx files are understood by the browser? I understand Vite uses esbuild or something underneath, but I don’t see any dist or build folder, and the requests seems to be directed at the .jsx files directly, not a compiled file:

request to App.jsx

I think I’m in over my head here. How do people make a fullstack React app?

>Solution :

Even though the request looks like it’s fetching the JSX source, it is not. What happens is the browser asks for App.jsx, and the vite server responds with a compiled version of App.jsx. You can see this in action by clicking on the request and previewing the response. Notice all the JSX is compiled down.

You won’t see a build folder in dev because the compilation happens in memory in the vite server. It doesn’t serve them from disk, it does it on the fly.

So it’s kind of like a middleware. JSX isn’t really running in the browser, it just references the precompiled version that sits in vites memory using the original filename.

Why are you wanting to not use vite? Are you trying to build for production? In this workflow, everything is different. You execute a vite build and serve the built files statically from disk. You don’t want to be doing on-the-fly compilation in production anyway.

If you are wanting to add a developer mode to your server, I would recommend configuring Vite in middleware mode and bundle it with your existing server.

Alternatively, you could develop your UI through the vite server and configure vite to proxy through API requests to your "real" backend.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading