Deploy quasar to netlify with ssr mode #16565
Replies: 4 comments
-
|
thanks, it's work |
Beta Was this translation helpful? Give feedback.
-
|
For ease of use, I have encapsulated the above steps as an extension,you can try it: |
Beta Was this translation helpful? Give feedback.
-
|
Thanks alot😎 |
Beta Was this translation helpful? Give feedback.
-
|
Unfortunately, after the new version of Quasar was migrated to the ESM architecture, this approach no longer worked If you use For more info, please ref the extension source code: dongwa/netlify-quasar@c70fc04 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello everyone,
I dedicated a lot of time and effort to successfully deploy Quasar on Netlify with SSR mode and I'd like to share my process and some optimization tips. Please keep in mind that my method may not be the best, so if you have any better suggestions, I'm open to discussing them.
there is an example repo: https://github.com/dongwa/quasar-netlify-ssr-demo
Let's dive into the process:
1. Initial Setup
At the outset, there was a scarcity of information on deploying Quasar SSR on Netlify. To overcome this hurdle, I treated the Quasar SSR app as an Express app. This allowed me to leverage information related to Netlify and Express for the deployment.
2. Creating the Netlify Configuration File
To get started, I created a Netlify configuration file named
netlify.tomlat the root of my project. Here's what the file looks like:3. Overcoming Challenges
One of the first challenges I encountered was related to the
[functions].directoryconfiguration. Initially, I tried to usedist/ssr/index.jsas Netlify's function, but it resulted in an error that said, "index.handler is not defined or not exported." I realized that Netlify requires a JavaScript file structured as follows:However, Quasar's
dist/ssr/index.jshad a different structure:To resolve this, I made changes to the
listenfunction insrc-ssr/server.jsby removing all async code to eliminate promises like:and then created a new function,
dist/ssr/netlify/functions/index.js, as Netlify's function. Here's what it looks like:4. Managing Clean Builds
Since the
distdirectory gets cleaned during the build process, I added a script to create thedist/ssr/netlify/functions/index.jsfile after each build. I accomplished this by editing thequasar.config.jsfile:5. Handling Static Asset Loading
After deploying, I encountered an issue where only the initial HTML page loaded, and all static assets like CSS and JS files were not working as expected.
To be honest, I'm not entirely sure why this happened. In theory, Quasar should already be handling the static file hosting. However, I did find a solution:
To address this, I made some changes to the
netlify.tomlfile by adding specific[[redirects]]rules:This ensured that
client/assetsdirectory would load correctly. However, adding all client files to[[redirects]]was a tedious process.6. Alternative Redirect Handling
I found an alternative approach to handle redirects by referring to Netlify's documentation. You can save a plain text file called
_redirectswithout a file extension in your site's publish directory. refs https://docs.netlify.com/routing/overview/To automate this process, I used JavaScript to generate the
_redirectsfile after each build:After these adjustments, I successfully deployed the application, and everything worked as expected. I hope this information is helpful, and you can now enjoy your fully functional Quasar application on Netlify with SSR mode!
If there are any shortcomings in this article, please feel free to point them out.
2024/2/18 Update
For ease of use, I have encapsulated the above steps as an quasar-app-extension,you can try it:
dongwa/netlify-quasar
2025/5/21 Update
Unfortunately, after the new version of Quasar was migrated to the ESM architecture, this approach no longer worked
If you use
@quasar/app-vitev2.0+ with esm, you can tryquasar ext add [email protected].For more info, please ref the extension source code: dongwa/netlify-quasar@c70fc04
Beta Was this translation helpful? Give feedback.
All reactions