es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Svelte: Exporta una variable pero Rollup informa que la variable no está exportada.

Soy nuevo en Svelte (3 semanas) y no sé si estoy haciendo algo malo. Estoy intentando exportar una constante para usar en otro componente, VSCode no reporta ningún error, pero rollupJs en la terminal reporta este error:

[!] Error: 'repos' no está exportado por src\components\Request.svelte, importado por src\components\List.svelte

Pero la variable ha sido exportada correctamente (supongo).

Este es el Request.svelte:

<script>
import {writable} from 'svelte/store'
let userName = ''
export const repos = writable([]);
</script>

Y esto es el List.svelte donde quiero importar la constante repos:

<script>
import {onMount} from "svelte";
import {MDCList} from '@material/list';
import {MDCRipple} from '@material/ripple';
import {repos} from './Request.svelte';

repos = data;
</script>

Entonces, ¿qué estoy haciendo mal?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando reasignar la constante exportada repos en el archivo List.svelte, lo cual no es posible ya que es un valor constante. En su lugar, deberías usar el método subscribe para obtener el valor de repos en el archivo List.svelte:

    <script>
      import {onMount, onDestroy} from "svelte";
      import {MDCList} from '@material/list';
      import {MDCRipple} from '@material/ripple';
      import {repos} from './Request.svelte';
    
      let data;
    
      const unsubscribe = repos.subscribe(value => {
        data = value;
      });
    
      onMount(() => {
        // tu código aquí
      });
    
      // No te olvides de cancelar la suscripción cuando se destruya el componente
      onDestroy(() => {
        unsubscribe();
      });
    </script>
    

    Al suscribirte al almacén repos, puedes obtener su valor actual y utilizarlo en tu componente List.svelte. Asegúrate de cancelar la suscripción cuando se destruya el componente para evitar posibles fugas de memoria.

    ¡Espero que esto te sea de ayuda!

Comments are closed.