From c42f0dca99dcfa325adeccb37a2c81757bb02ce0 Mon Sep 17 00:00:00 2001 From: wangyaqi Date: Tue, 13 Sep 2022 18:50:08 +0800 Subject: [PATCH] fix(ssr): router base error --- packages/uni-h5-vite/src/plugins/manifestJson.ts | 11 ++++++++--- packages/uni-h5/src/framework/plugin/router.ts | 12 ++++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/packages/uni-h5-vite/src/plugins/manifestJson.ts b/packages/uni-h5-vite/src/plugins/manifestJson.ts index 3f27399ef..eb0054aaf 100644 --- a/packages/uni-h5-vite/src/plugins/manifestJson.ts +++ b/packages/uni-h5-vite/src/plugins/manifestJson.ts @@ -11,6 +11,7 @@ const defaultRouter = { mode: 'hash', base: '/', assets: 'assets', + routerBase: '/' } const defaultAsync = { @@ -44,9 +45,13 @@ export function uniManifestJsonPlugin(): Plugin { } if (!router.base) { router.base = '/' - } else { - router.base = new URL(router.base, 'http://localhost').pathname - } + } + + /** + * ssr时base和访问域名不一致导致跳到错误链接,其实应该区分server和client的部署路径,后续有需求可以加上 + */ + router.routerBase = new URL(router.base, 'http://localhost').pathname + const async = { ...defaultAsync, ...((h5 && h5.async) || {}) } const networkTimeout = normalizeNetworkTimeout(manifest.networkTimeout) diff --git a/packages/uni-h5/src/framework/plugin/router.ts b/packages/uni-h5/src/framework/plugin/router.ts index 9c15a3569..145a4b1a0 100644 --- a/packages/uni-h5/src/framework/plugin/router.ts +++ b/packages/uni-h5/src/framework/plugin/router.ts @@ -45,17 +45,17 @@ function removeCurrentPages(delta: number = 1) { } function initHistory() { - let { base } = __uniConfig.router! - if (base === '/') { - base = '' + let { routerBase } = __uniConfig.router! + if (routerBase === '/') { + routerBase = '' } if (__NODE_JS__) { - return createMemoryHistory(base) + return createMemoryHistory(routerBase) } const history = __UNI_FEATURE_ROUTER_MODE__ === 'history' - ? createWebHistory(base) - : createWebHashHistory(base) + ? createWebHistory(routerBase) + : createWebHashHistory(routerBase) history.listen((_to, _from, info) => { if (info.direction === 'back') { removeCurrentPages(Math.abs(info.delta)) -- GitLab