diff --git a/packages/plugin-locale/src/templates/localeExports.tpl b/packages/plugin-locale/src/templates/localeExports.tpl index 251aa524..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.cookieEnabled && typeof localStorage !== 'undefined' && useLocalStorage + typeof navigator !== 'undefined' && navigator.cookieEnabled && typeof localStorage !== 'undefined' && useLocalStorage && typeof window !== 'undefined' ? window.localStorage.getItem('umi_locale') : ''; // support baseNavigator, default true @@ -202,7 +202,7 @@ export const setLocale = (lang: string, realReload: boolean = true) => { const updater = () => { if (getLocale() !== lang) { - if (navigator.cookieEnabled && 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); @@ -211,7 +211,7 @@ export const setLocale = (lang: string, realReload: boolean = true) => { } else { event.emit(LANG_CHANGE_EVENT, lang); // chrome 不支持这个事件。所以人肉触发一下 - if (window.dispatchEvent) { + if (typeof window !== 'undefined' && window.dispatchEvent) { const event = new Event('languagechange'); window.dispatchEvent(event); }