nuxt-modules / i18n

I18n module for Nuxt
https://i18n.nuxtjs.org
MIT License
1.75k stars 483 forks source link

Memory Leak - crashes out #2793

Closed andylord56 closed 9 months ago

andylord56 commented 9 months ago

Environment

Reproduction

Component:

<script lang="ts" setup>
  const languageStore = useLanguageStore();
  const userStore  = useUserStore();
  const { locale } = useI18n();
  const locales = ['en', 'fr'];

  function updateLocale(lang: string) {
    languageStore.setLocale(lang);
    locale.value = lang;
    if (userStore.isLoggedIn) {
        languageStore.storeResidentLocale(locale.value)
    }
  }

  onMounted(() => {
    const savedLocale = window.localStorage.getItem('locale')

    if (savedLocale) {
      languageStore.setLocale(savedLocale)
      locale.value = savedLocale
    } else {
      locale.value = languageStore.locale
    }
  })
</script>

<template>
  <UFormGroup name="locale">
    <USelect
      v-model="locale"
      @change="updateLocale($event.target.value)"
      :options="locales" 
    />
  </UFormGroup>
</template>

Config:

import en from './locales/en.json'
import fr from './locales/fr.json'

export default defineI18nConfig(() => ({
    legacy: false,
    locale: 'en',
    messages: {
      en,
      fr
    }
  }))

SetLocale

    setLocale(newLocale: string) {
      this.locale = newLocale;
      if (process.client) {
        window.localStorage.setItem('locale', newLocale);
      }
    },

Describe the bug

When running the app all fine however pressing F5 to refresh will then suddenly start using all the memory and cpu to crash

Have used versions: 8.11 8.0.1 - saw in another issue that possible fix

Additional context

No response

Logs

No response

github-actions[bot] commented 9 months ago

Would you be able to provide a reproduction? 🙏

More info ### Why do I need to provide a reproduction? Reproductions make it possible for us to triage and fix issues quickly with a relatively small team. It helps us discover the source of the problem, and also can reveal assumptions you or we might be making. ### What will happen? If you've provided a reproduction, we'll remove the label and try to reproduce the issue. If we can, we'll mark it as a bug and prioritise it based on its severity and how many people we think it might affect. If `needs reproduction` labeled issues don't receive any substantial activity (e.g., new comments featuring a reproduction link), we'll close them. That's not because we don't care! At any point, feel free to comment with a reproduction and we'll reopen it. ### How can I create a reproduction? We have a couple of templates for starting with a minimal reproduction: 👉 [Reproduction starter (v8 and higher)](https://stackblitz.com/fork/github/BobbieGoede/nuxt-i18n-starter/tree/v8) 👉 [Reproduction starter (edge)](https://stackblitz.com/fork/github/BobbieGoede/nuxt-i18n-starter/tree/edge) A public GitHub repository is also perfect. 👌 Please ensure that the reproduction is as **minimal** as possible. See more details [in our guide](https://nuxt.com/docs/community/reporting-bugs/#create-a-minimal-reproduction). You might also find these other articles interesting and/or helpful: - [The Importance of Reproductions](https://antfu.me/posts/why-reproductions-are-required) - [How to Generate a Minimal, Complete, and Verifiable Example](https://stackoverflow.com/help/mcve)