Je suis en train de déboguer un problème que je rencontre avec les menus déroulants BS4 qui ne fonctionnent pas, et j’ai constaté qu’au clic, _ember_jquery.js est appelé à /assets/var/www/discourse/public/assets au lieu de /assets (où il est en réalité situé). Je ne sais pas pourquoi le chemin complet du serveur est ajouté. À ma connaissance, aucune modification de configuration pertinente n’a été apportée, et la seule chose sur laquelle j’ai travaillé est l’ajout d’un simple plugin personnalisé (oui, le problème persiste même après la suppression du plugin). Je suis assez nouveau sur Discourse, donc toute réflexion à ce sujet serait grandement appréciée. Veuillez me faire savoir si vous avez besoin d’informations supplémentaires.
Je pense que le problème vient de la manière dont la source map est générée, en raison de cette PR : https://github.com/discourse/discourse/pull/7834.
Auparavant, l’option relative -p était utilisée, ce qui donnait des chemins de source map du type [‘admin…js.map’]. À partir de la version 2.4.beta9, l’option -p n’est plus disponible en raison du passage à uglify 3, si bien que les chemins de source map étaient absolus, comme [‘/var/www/discourse/public/assets/admin…js.map’]. Cela provoquait des erreurs 404 lors du débogage, car le fichier réel se trouvait dans /assets, tandis que la carte indiquait qu’il était dans /var/www/…/assets.
Une solution de contournement que j’ai trouvée consiste à modifier lib/tasks/asset.rake pour ajouter l’option base au paramètre de la source map, ce qui donne :
base = assets_path + ((d = File.dirname(from)) == "." ? "" : "/#{d}")
cmd = <<~EOS
uglifyjs '#{assets_path}/#{from}' -m -c -o '#{to_path}' --source-map "base='#{base}',root='#{source_map_root}',url='#{source_map_url}'" --output '#{to_path}'
EOS
Je ne peux pas garantir que cela fonctionnera pour tout le monde, mais cela me permet de déboguer via les source maps sans rencontrer d’erreurs 404.
Devions-nous corriger cela, @sam ?
Oui, nous suivons cela ailleurs. J’ajouterai une note sur le TODO pour que @Roman soit informé.
Désolé pour le retard, le problème est maintenant corrigé et rétroporté sur les versions bêta et stable. J’ai ajouté l’attribut base, qui contient le chemin vers l’actif, en laissant l’attribut source avec uniquement le nom du fichier.