From 86a7fc949d968864c6e992cb61c54b9d0f07bffa Mon Sep 17 00:00:00 2001 From: Peter007 <493292212@qq.com> Date: Mon, 11 Sep 2023 14:46:49 +0800 Subject: [PATCH 1/2] Update localeExports.tpl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 兼容 ssr模式下,找不到window和navigator报错 --- packages/plugin-locale/src/templates/localeExports.tpl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/plugin-locale/src/templates/localeExports.tpl b/packages/plugin-locale/src/templates/localeExports.tpl index 251aa524..97e68d0a 100644 --- a/packages/plugin-locale/src/templates/localeExports.tpl +++ b/packages/plugin-locale/src/templates/localeExports.tpl @@ -159,7 +159,7 @@ export const getLocale = () => { // please clear localStorage if you change the baseSeparator config // because changing will break the app const lang = - navigator.cookieEnabled && typeof localStorage !== 'undefined' && useLocalStorage + navigator && navigator.cookieEnabled && typeof localStorage !== 'undefined' && useLocalStorage && window ? window.localStorage.getItem('umi_locale') : ''; // support baseNavigator, default true @@ -202,16 +202,16 @@ export const setLocale = (lang: string, realReload: boolean = true) => { const updater = () => { if (getLocale() !== lang) { - if (navigator.cookieEnabled && typeof window.localStorage !== 'undefined' && useLocalStorage) { + if (navigator && navigator.cookieEnabled && window && typeof window.localStorage !== 'undefined' && useLocalStorage) { window.localStorage.setItem('umi_locale', lang || ''); } setIntl(lang); if (realReload) { - window.location.reload(); + window && window.location.reload(); } else { event.emit(LANG_CHANGE_EVENT, lang); // chrome 不支持这个事件。所以人肉触发一下 - if (window.dispatchEvent) { + if (window && window.dispatchEvent) { const event = new Event('languagechange'); window.dispatchEvent(event); } From ab8cc9dc408179c30c82fd855aef16e26599e939 Mon Sep 17 00:00:00 2001 From: Peter007 <493292212@qq.com> Date: Mon, 11 Sep 2023 18:45:04 +0800 Subject: [PATCH 2/2] Update localeExports.tpl --- packages/plugin-locale/src/templates/localeExports.tpl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/plugin-locale/src/templates/localeExports.tpl b/packages/plugin-locale/src/templates/localeExports.tpl index 97e68d0a..1b586016 100644 --- a/packages/plugin-locale/src/templates/localeExports.tpl +++ b/packages/plugin-locale/src/templates/localeExports.tpl @@ -159,7 +159,7 @@ export const getLocale = () => { // please clear localStorage if you change the baseSeparator config // because changing will break the app const lang = - navigator && navigator.cookieEnabled && typeof localStorage !== 'undefined' && useLocalStorage && window + typeof navigator !== 'undefined' && navigator.cookieEnabled && typeof localStorage !== 'undefined' && useLocalStorage && typeof window !== 'undefined' ? window.localStorage.getItem('umi_locale') : ''; // support baseNavigator, default true @@ -202,16 +202,16 @@ export const setLocale = (lang: string, realReload: boolean = true) => { const updater = () => { if (getLocale() !== lang) { - if (navigator && navigator.cookieEnabled && window && typeof window.localStorage !== 'undefined' && useLocalStorage) { + if (typeof navigator !== 'undefined' && navigator.cookieEnabled && typeof window !== 'undefined' && typeof window.localStorage !== 'undefined' && useLocalStorage) { window.localStorage.setItem('umi_locale', lang || ''); } setIntl(lang); if (realReload) { - window && window.location.reload(); + window.location.reload(); } else { event.emit(LANG_CHANGE_EVENT, lang); // chrome 不支持这个事件。所以人肉触发一下 - if (window && window.dispatchEvent) { + if (typeof window !== 'undefined' && window.dispatchEvent) { const event = new Event('languagechange'); window.dispatchEvent(event); }