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.

No puedo acceder al objeto definido por el complemento-rollup plugin-replace.

En un componente Svelte, estoy tratando de acceder a un objeto que configuré en mi archivo de configuración de Rollup.
Mi archivo rollup.config.js se ve así:

import replace from '@rollup/plugin-replace';

...
export default {
...
    replace({
        foo: JSON.stringify({ bar: 'Hola' }),
    }),
...

En mi componente Svelte, un simple console.log(foo) funciona:

foo

Pero cuando intento acceder a ese objeto foo como console.log(foo.bar), obtengo “foo no está definido”:

fooUndefined

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La razón por la que estás obteniendo un error al intentar acceder a foo.bar es porque foo está definido dentro del alcance del complemento de replace en tu archivo rollup.config.js, pero no está disponible en el alcance de tu componente Svelte.

    Para acceder a foo dentro de tu componente Svelte, podrías exportarlo desde tu archivo rollup.config.js de la siguiente manera:

    import replace from '@rollup/plugin-replace';
    
    export default {
        // ... otras opciones de configuración ...
        plugins: [
            replace({
                foo: JSON.stringify({ bar: 'Hola' }),
            }),
        ],
        output: {
            // ... otras opciones de salida ...
            globals: {
                foo: 'window.foo',
            },
        },
    };
    

    Luego, en tu componente Svelte, puedes acceder a foo de la siguiente manera:

    console.log(window.foo.bar);
    

    Al exportar foo al objeto window, lo estás haciendo disponible globalmente dentro de tu aplicación y puedes acceder a él desde cualquier script o componente.

Comments are closed.