Sto debuggando un problema che ho riscontrato con i dropdown di BS4 che non funzionano e ho scoperto che, al click, _ember_jquery.js viene chiamato in /assets/var/www/discourse/public/assets invece che in /assets (dove si trova effettivamente). Non so perché venga aggiunto il percorso completo del server. Per quanto ne so, non sono state apportate modifiche di configurazione rilevanti e l’unica cosa su cui ho lavorato è l’aggiunta di un semplice plugin personalizzato (sì, il problema persiste anche dopo aver rimosso il plugin). Sono abbastanza nuovo di Discourse, quindi qualsiasi idea al riguardo sarebbe molto apprezzata. Fate sapere se avete bisogno di ulteriori informazioni.
Credo che questo sia un problema legato alla generazione delle source map, causato da questa PR: DEV: Bump uglifyjs by romanrizzi · Pull Request #7834 · discourse/discourse · GitHub.
In precedenza, veniva utilizzata l’opzione relativa -p, quindi i percorsi delle source map apparivano come [‘admin…js.map’]. A partire dalla versione 2.4.beta9, l’opzione -p non è più disponibile a causa del passaggio a uglify 3, quindi i percorsi delle source map sono diventati assoluti, come [‘/var/www/discourse/public/assets/admin…js.map’]. Ciò ha causato errori 404 durante il debug delle source map, poiché il file effettivo si trovava in /assets, ma la mappa indicava che si trovava in /var/www/…/assets.
Un workaround che ho trovato consiste nel modificare lib/tasks/asset.rake per aggiungere l’opzione base al parametro della source map, in modo che appaia così:
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
Non posso garantire che funzioni per tutti, ma mi permette di eseguire il debug tramite le source map senza errori 404.
Dovevamo risolvere questo @sam?
Sì, stiamo monitorando la questione altrove; aggiornerò il TODO per informare @Roman.
Scusa per il ritardo, il problema è stato risolto e backportato su beta e stable. Ho aggiunto l’attributo base, che contiene il percorso dell’asset, lasciando l’attributo source con solo il nome del file.