Ruta de mapa de origen incorrecta en instalación de subcarpeta

Mi instalación en subcarpeta seguía dando errores en la consola de Firefox porque no podía encontrar los mapas de origen.

Error del mapa de origen: la solicitud falló con el estado 404 URL del recurso: [https://redacted.com/community/assets/admin-…1d82fc1b0c7d1f24b7b71256a4eb4860f1aa96444925a361d8c24425c.js](https://redacted.com/community/assets/admin-e1c3cbc1d82fc1b0c7d1f24b7b71256a4eb4860f1aa96444925a361d8c24425c.js) URL del mapa de origen: /assets/admin-e1c3cbc1d82fc1b0c7d1f24b7b71256a4eb4860f1aa96444925a361d8c24425c.js.map

Como puedes ver, falta el prefijo de ruta /community en la URL del mapa de origen.

Así que hice una pequeña investigación.

lib/tasks/assets.rake hace lo siguiente:

  assets = cdn_relative_path("/assets")
  source_map_root = assets + ((d = File.dirname(from)) == "." ? "" : "/#{d}")

Ahora, cdn_relative_path en lib/global_path.rb se ve así:

module GlobalPath
  def path(p)
    "#{GlobalSetting.relative_url_root}#{p}"
  end

  def cdn_path(p)
    GlobalSetting.cdn_url.blank? ? p : "#{GlobalSetting.cdn_url}#{path(p)}"
  end

  def upload_cdn_path(p)
    if SiteSetting.Upload.s3_cdn_url.present?
      p = Discourse.store.cdn_url(p)
    end

    (p =~ /^http/ || p =~ /^\/\//) ? p : cdn_path(p)
  end

  def cdn_relative_path(path)
    if (cdn_url = GlobalSetting.cdn_url).present?
      URI.parse(cdn_url).path + path
    else
      path
    end
  end

Como puedes ver, tanto cdn_path como upload_cdn_path terminan llamando al método path, que asegura que se añada el prefijo de la subcarpeta. Sin embargo, cdn_relative_path no llama al método path; simplemente devuelve su parámetro (llamado… path).

Por cierto, creo que cdn_path también debería devolver path(p) en la parte media del operador ternario.

1 me gusta

@sam es el experto en source maps

@david ya ha estado metiendo mano a esto en el pasado, pero sí, configurar correctamente las rutas para CDN + subcarpeta no es fácil. Estoy abierto a una PR que lo solucione, siempre que esté muy enfocada en tu combinación mágica y no rompa nada que funcione actualmente.

3 Me gusta

@sam ¿Tenemos alguna solución para este problema con un mapa de orígenes incorrecto? Tengo el mismo problema con la instalación en subcarpeta y Fastly CDN.

Mi recomendación es simplemente esperar un poco; estamos migrando a Ember CLI, lo cual reemplazará toda esta cadena de procesos.

2 Me gusta

@sam ¿Cuándo vamos a migrar a Ember CLI? Tenemos el mismo problema con la instalación en subcarpetas y Fastly CDN.

Esta transición está en curso; ya puedes desarrollar localmente con Ember CLI, aunque faltan unos pocos meses.

2 Me gusta

¿Creo que esto debería resolverse con ember-cli? @david ¿sabrías si ese es el caso?

2 Me gusta

Sí, he realizado varias mejoras en los mapas de origen durante las últimas semanas, que se aplican tanto a los pipelines ‘legacy’ como a los de Ember-CLI.

Acabo de revisar uno de nuestros sitios alojados en subcarpetas en tests-passed, y las cosas parecen estar funcionando mucho mejor :ok_hand:

5 Me gusta

Este tema se cerró automáticamente después de 12 días. Ya no se permiten nuevas respuestas.