Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

946
Visualizações
No se pueden usar activos en url () en scss después de actualizar a Angular 10

Actualicé mi aplicación Angular de v9 a v10. Casi todo funcionó, pero todas mis imágenes utilizadas en url("assets/images/some/path/image.png") comenzaron a generar la excepción:

 ERROR in ./src/app/pages/about-us/about-us.component.scss Module Error (from ./node_modules/postcss-loader/src/index.js): (Emitted value instead of an instance of Error) CssSyntaxError: /Users/shashank/Projects/curika/temp-ssr/src/app/pages/about-us/about-us.component.scss:4:20: Can't resolve './assets/images/about-us.png' in '/Users/shashank/Projects/curika/temp-ssr/src/app/pages/about-us' 2 | display: block; 3 | min-height: 500px; > 4 | background: url("./assets/images/about-us.png") no-repeat center; | ^ 5 | }

Angular 10 error de activos

Probé varios enlaces antiguos pero ninguno funcionó.

  1. https://github.com/angular/angular-cli/issues/12797
  2. https://github.com/angular/angular/issues/32811
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Si su carpeta de assets está dentro de la carpeta src , intente esto:

 background: url("~src/assets/images/some/path/image.png")

Esta solución funcionará con base-href

over 4 years ago · Santiago Trujillo Relatório

0

¿No estás realmente seguro de qué ha cambiado en Angular 10?

Pero encontré tres soluciones. La primera solución que sabía funcionaría, pero lleva tiempo implementarla en una aplicación de tamaño medio existente . Pero si solo tiene unos pocos activos para reparar, debe optar solo por la primera solución.

Solución 1: uso de la ruta de activos relativa (recomendado)

La solución es usar la ruta relativa (desde su archivo .scss ) de sus activos. Básicamente agregando ../ hasta llegar a la carpeta de assets .

 :host { display: block; min-height: 500px; // Using relative path background: url('../../../assets/images/about-us.png') no-repeat center; }

ventajas

  1. Este enfoque permite el hash de sus activos estáticos. Una vez que se crea su aplicación (usando ng build --prod ), la URL de su activo se reemplazará con un hash MD5 para romper el almacenamiento en caché.

    Entonces tu URL

     background: url('../../../assets/images/about-us.png') no-repeat center;

    será reemplazado como

     background: url('about-us.add9979f32e1c969e6f8.png') no-repeat center;

    Esto es básicamente una suma de comprobación MD5 del contenido de la imagen. Básicamente, cuando la imagen cambia incluso en un píxel, esta suma de verificación se cambiará por Angular. Esto le ayuda a explotar el almacenamiento en caché en el futuro cuando cambia su imagen y mantiene el mismo nombre de archivo.

    Lea más aquí para el conocimiento.

  2. IDE (utilizo IntelliJ IDEA) no muestra errores de los activos en sus archivos SCSS, lo que significa que si la ruta del archivo es incorrecta, IDE se lo informará con anticipación.

    Errores IDE desaparecidos

  3. Obtienes la vinculación del directorio. Eso significa que si presiono Ctrl y hago clic en un directorio en la URL anterior, IDE abrirá ese directorio.

Contras

  1. ( Manejable ) Este podría ser un enfoque engorroso ya que el desarrollador tiene que escribir el activo que debe ser relativo a la carpeta de activos.

  2. ( Manejable ) El activo con hash (imagen en este caso) se copiará en la carpeta raíz en el directorio de compilación (es decir, dist por defecto) que podría fallar en cualquier tipo de reglas de URL (por ejemplo, reglas de almacenamiento en caché). Así que en lugar de-

     https://example.com/assets/images/about-us.png

    se utilizará la siguiente URL-

     https://example.com/about-us.add9979f32e1c969e6f8.png
  3. ( Manejable ) Si cambia la ruta de su componente, también debe cambiar la URL de la imagen.


Solución 2 - Solución rápida

Basado en la respuesta publicada aquí https://github.com/angular/angular-cli/issues/10004#issuecomment-375969537 , agregar / delante de la URL funcionó.

 :host { display: block; min-height: 500px; background: url('/assets/images/about-us.png') no-repeat center; }

ventajas

  1. No tiene que agregar muchos prefijos ../ para convertirlo en una URL relativa.
  2. Si cambia la ruta de su archivo SCSS componente, no tiene que cambiar la ruta de sus activos en url("") .

Contras

  1. La segunda solución no funcionará en la compilación de producción si se --base-href (como se indica aquí ). angular-cli#18043 .

  2. Su IDE sigue mostrando el error de ruta incluso si la ruta es correcta.

    Error de ruta IDE

  3. No obtiene las URL codificadas para reventar el caché (a diferencia de la solución 1)


Solución 3: engañar al procesador Angular CLI (no recomendado)

Investigué el código CLI y descubrí que si una URL comienza con ^ , Angular ignora el activo al pasar por alto la URL.

 :host { display: block; min-height: 500px; background: url('^assets/images/about-us.png') no-repeat center; }

Código fuente: https://github.com/angular/angular-cli/blob/v10.0.0/packages/angular_devkit/build_angular/src/angular-cli-files/plugins/postcss-cli-resources.ts#L72

ventajas

  1. No tiene que agregar muchos prefijos ../ para convertirlo en una URL relativa.

  2. Si cambia la ruta de su archivo SCSS componente, no tiene que cambiar la ruta de sus activos en url("") .

Contras

  1. Esta solución podría eliminarse en versiones futuras, como lo indicó uno de los desarrolladores de Angular CLI en el n.º 18013 (comentario)
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda