feat: enable ssr and serve it with the api
This commit is contained in:
parent
68fcbcb545
commit
91a15f417e
|
@ -16,7 +16,7 @@ const clientConfig = {
|
|||
};
|
||||
|
||||
export default {
|
||||
mode: 'spa',
|
||||
ssr: true,
|
||||
server: {
|
||||
port: process.env.WEBSITE_PORT
|
||||
},
|
||||
|
@ -66,7 +66,6 @@ export default {
|
|||
'~/plugins/vue-isyourpasswordsafe',
|
||||
'~/plugins/vue-timeago',
|
||||
'~/plugins/vuebar',
|
||||
'~/plugins/nuxt-client-init',
|
||||
'~/plugins/notifier',
|
||||
'~/plugins/handler'
|
||||
],
|
||||
|
|
|
@ -5,6 +5,7 @@ if (!process.env.SERVER_PORT) {
|
|||
process.exit(0);
|
||||
}
|
||||
|
||||
const { loadNuxt, build } = require('nuxt');
|
||||
const express = require('express');
|
||||
const helmet = require('helmet');
|
||||
const cors = require('cors');
|
||||
|
@ -80,25 +81,13 @@ class Server {
|
|||
});
|
||||
}
|
||||
|
||||
serveNuxt() {
|
||||
// Serve the frontend if we are in production mode
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
this.server.use(express.static(path.join(__dirname, '../../../dist')));
|
||||
async serveNuxt() {
|
||||
const isProd = process.env.NODE_ENV === 'production';
|
||||
const nuxt = await loadNuxt(isProd ? 'start' : 'dev');
|
||||
this.server.use(nuxt.render);
|
||||
if (!isProd) {
|
||||
build(nuxt);
|
||||
}
|
||||
|
||||
/*
|
||||
For vue router to work with express we need this fallback.
|
||||
After all the routes are loaded and the static files handled and if the
|
||||
user is trying to access a non-mapped route we serve the website instead
|
||||
since it has routes of it's own that don't work if accessed directly
|
||||
*/
|
||||
this.server.all('*', (_req, res) => {
|
||||
try {
|
||||
res.sendFile(path.join(__dirname, '../../../dist/index.html'));
|
||||
} catch (error) {
|
||||
res.json({ success: false, message: 'Something went wrong' });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
createJobs() {
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
export default async ctx => {
|
||||
await ctx.store.dispatch('nuxtClientInit', ctx);
|
||||
};
|
|
@ -1,9 +1,8 @@
|
|||
import config from '../../../dist/config.json';
|
||||
|
||||
export const actions = {
|
||||
async nuxtClientInit({ commit, dispatch }) {
|
||||
async nuxtServerInit({ commit, dispatch }) {
|
||||
commit('config/set', config);
|
||||
|
||||
const cookies = this.$cookies.getAll();
|
||||
if (!cookies.token) return dispatch('auth/logout');
|
||||
|
||||
|
|
Loading…
Reference in New Issue