El siguiente código en lib/highlight_js.rb funciona en algunos dominios pero no en otros:
def self.path
"/highlight-js/#{Discourse.current_hostname}/#{version SiteSetting.highlighted_languages}.js"
end
Tengo dos sitios de Discourse. Este código funciona en el dominio www.abc.com, pero no funciona en efg.com. En la consola del navegador, veo el siguiente error:
formatter.js:383 Uncaught (in promise) TypeError: Failed to resolve module specifier '/highlight-js/efg.com/9797975efac87d28baa695ae13ca72ccaf5120f5.js'. La URL base es about:blank porque import() se llama desde un script CORS-cross-origin.
Después de modificar self.path en highlight_js.rb de la siguiente manera:
def self.path
"https://#{Discourse.current_hostname}/highlight-js/#{Discourse.current_hostname}/#{version SiteSetting.highlighted_languages}.js"
end
el problema se resolvió.
Parece que usar una ruta relativa como import('/highlight-js/efg.com/9797975efac87d28baa695ae13ca72ccaf5120f5.js')
causa un problema CORS, mientras que usar una URL absoluta, import('https://efg.com/highlight-js/efg.com/9797975efac87d28baa695ae13ca72ccaf5120f5.js') , funciona bien.
¿Estás utilizando una CDN en alguno de estos sitios? He notado que el resaltado de código ya no funciona en mi sitio, y creo que es por esto:
En mi caso, mi CDN no está devolviendo una cabecera Access-Control-Allow-Origin para el archivo highlightjs. Noto que la CDN de Meta sí incluye esa cabecera, así que me pregunto qué es diferente.
Sí, estoy usando una CDN en efg.com, pero cuando accedo al archivo js me devuelve un Access-Control-Allow-Origin correcto, lo que me confunde bastante.
Como seguimiento, configuré cdn_origin_hostname con el nombre de dominio normal de mi instancia de Discourse, vacié la caché de la CDN y ahora highlightjs funciona de nuevo. No he notado ningún efecto secundario…