From 01c7879ce51ad28f577e5a6a3848516e21fa6830 Mon Sep 17 00:00:00 2001 From: k99k5 <545551320@qq.com> Date: Sat, 24 Feb 2024 18:03:12 +0800 Subject: [PATCH 1/3] :sparkles: feat: rename worker.js to server-production.js and update vite config --- package.json | 2 +- server-production.js | 30 ++++++++++++++++++++++++++++++ src/worker.js | 37 ------------------------------------- vite.config.js | 4 ++++ 4 files changed, 35 insertions(+), 38 deletions(-) create mode 100644 server-production.js delete mode 100644 src/worker.js diff --git a/package.json b/package.json index a424dd1..4e0d887 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "dev": "node server.js", "build": "pnpm run build:client && pnpm run build:server", "build:client": "vite build --outDir dist/client --ssrManifest", - "build:server": "vite build --outDir dist/server --ssr src/worker.js" + "build:server": "vite build --outDir dist/server --ssr server-production.js" }, "dependencies": { "@duannx/vue-client-only": "^1.0.3", diff --git a/server-production.js b/server-production.js new file mode 100644 index 0000000..a873a41 --- /dev/null +++ b/server-production.js @@ -0,0 +1,30 @@ +import path from 'node:path'; +import {render} from '@/entry-server.js'; +import template from './dist/client/index.html?raw'; +import manifest from './dist/client/.vite/ssr-manifest.json?raw'; +import express from 'express'; + +const app = express(); + +app.use('/', express.static(path.join('./../client'))); + +app.get('*', async (req, res) => { + try { + const renderRes = await render(req.originalUrl, manifest, { + cookies: req.headers.cookie, + }); + res.status(200).send( + template + .replace(``, renderRes.html) + .replace(``, renderRes.preloadLinks) + .replace(``, renderRes.headTags) + .replace(`null;//''`, renderRes.state), + ); + } catch (e) { + res.status(500).send(e.stack); + } +}); + +app.listen(3000, () => { + console.log('http://localhost:3000'); +}) diff --git a/src/worker.js b/src/worker.js deleted file mode 100644 index 153732e..0000000 --- a/src/worker.js +++ /dev/null @@ -1,37 +0,0 @@ -import {render} from '@/entry-server'; -import template from '@/../dist/client/index.html?raw'; -import manifest from '@/../dist/client/.vite/ssr-manifest.json?raw'; -import express from "express"; - -const app = express(); - -app.listen(3000, () => { - console.log('http://localhost:3000'); -}) - - -export default { - async fetch(request) { - try { - const url = request.originalUrl || request.url; - const renderRes = await render(url, manifest, { - cookies: request.headers.get('cookie'), - }); - return new Response( - template - .replace(``, renderRes.html) - .replace(``, renderRes.preloadLinks) - .replace(``, renderRes.headTags) - .replace(`null;//''`, renderRes.state), - { - status: 200, - headers: { - 'Content-Type': 'text/html', - }, - }, - ); - } catch (e) { - return new Response(e.stack, {status: 500}); - } - }, -} diff --git a/vite.config.js b/vite.config.js index d75a688..996c2c7 100644 --- a/vite.config.js +++ b/vite.config.js @@ -139,4 +139,8 @@ export default defineConfig({ define: { __APP_VERSION: `${new Date().getFullYear()}${new Date().getMonth()}${new Date().getDate()}.${new Date().getHours()}`, }, + ssr: { + external: true, + noExternal: ['primevue'], + }, }); From 23147dd5756a0bdac2dae4c4f3ee52253aad3e86 Mon Sep 17 00:00:00 2001 From: k99k5 <545551320@qq.com> Date: Sat, 24 Feb 2024 20:39:58 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=94=A7=20build:=20Include=20more=20fi?= =?UTF-8?q?le=20types=20in=20globPatterns=20for=20PWA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vite.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vite.config.js b/vite.config.js index 996c2c7..e8aa4a1 100644 --- a/vite.config.js +++ b/vite.config.js @@ -84,7 +84,7 @@ export default defineConfig({ VitePWA({ registerType: 'autoUpdate', workbox: { - globPatterns: ['**/*.{js,css,html,ico,png,svg}'], + globPatterns: ['**/*.{js,css,ico,png,svg,ttf,woff,woff2,json,webp}'], navigateFallbackDenylist: [ /^\/api/, /^\/cdn-cgi/, From c72ce190e49634792a739de6e3d2f9acf42943e6 Mon Sep 17 00:00:00 2001 From: k99k5 <545551320@qq.com> Date: Sat, 24 Feb 2024 20:57:07 +0800 Subject: [PATCH 3/3] :bug: fix(server): serve static assets correctly --- server-production.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/server-production.js b/server-production.js index a873a41..7a7319d 100644 --- a/server-production.js +++ b/server-production.js @@ -6,7 +6,13 @@ import express from 'express'; const app = express(); -app.use('/', express.static(path.join('./../client'))); +const assets = express.static(path.join('./../client')); +app.use('/', async (req, res, next) => { + if (req.url.endsWith('/')) { + return next(); + } + return assets(req, res, next); +}); app.get('*', async (req, res) => { try {