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.

Cómo usar variables de Sass desde un CDN.

Tengo un proyecto que utiliza “create-react-app” y un archivo “colors.scss” alojado remotamente que solo contiene la definición de los colores (contenido a continuación).

$color-blue: #2281ff;
$color-cyan: #11a0f2;
$color-lue-light: #cfd7fc;

Luego tengo un archivo “index.scss” que se ve de la siguiente manera:

@import url('http://url.domain/colors.scss');

body {
  background-color: $color-blue;
}

Cuando se compila la aplicación, obtengo el siguiente error:

SassError: Variable no definida: "$color-blue".
        en la línea 4 de src/index.scss
>>   background-color: $color-blue;

Esto ocurre al utilizar “node-sass”.

Luego he intentado cambiar “node-sass” por “dart-sass”, que es simplemente “sass”, así que ejecuté “npm uninstall node-sass” y luego “npm install sass”.

Mi archivo se veía así:

@use url('http://url.domain/colors.scss');

body {
  background-color: $color-blue;
}

Esto generó un error:

SassError: Se esperaba una cadena.
  ╷
1 │ @use url('http://url.domain/colors.scss');

Al reescribir la importación a:

@use "http://url.domain/colors.scss";

obtuve:

SassError: No se puede encontrar la hoja de estilos para importar.
  ╷
1 │ @use "http://url.domain/colors.scss";
  │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

¿No es posible utilizar variables desde una fuente remota? ¿O me estoy perdiendo algo?

NOTA: “http://url.domain/colors.scss” es una versión abstracta del enlace, cuando se pega el enlace real en el navegador, se puede ver la hoja de estilos correcta con las variables cargadas.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema no está en el uso de variables desde una fuente remota, sino en la forma en que se maneja la importación en sass.

    La sintaxis para importar un archivo .scss remoto utilizando sass es la siguiente:

    @import url("http://url.domain/color.scss");
    

    Ten en cuenta que en este caso no se utiliza la función url().

    Por lo tanto, para solucionar el problema, el archivo index.scss debe ser actualizado de la siguiente manera:

    @import url("http://url.domain/color.scss");
    
    body {
      background-color: $color-blue;
    }
    

    Esto debería importar correctamente el archivo remoto colors.scss y permitir el uso de sus variables en el archivo index.scss.

Comments are closed.