При клике вызывается _ember_jquery по неверному пути

Я отлаживаю проблему с неработающими выпадающими списками BS4 и обнаружил, что при клике файл _ember_jquery.js вызывается по пути /assets/var/www/discourse/public/assets вместо /assets (где он фактически находится). Не понимаю, почему добавляется полный путь к серверу. Насколько мне известно, никаких соответствующих изменений в конфигурации не вносилось, и единственное, над чем я работал, — это добавление простого пользовательского плагина (да, проблема сохраняется даже после удаления плагина). Я относительно новичок в Discourse, поэтому буду очень признателен за любые мысли по этому поводу. Пожалуйста, дайте знать, если потребуется дополнительная информация.

Я считаю, что проблема заключается в способе генерации карты исходного кода, вызванном этим PR: DEV: Bump uglifyjs by romanrizzi · Pull Request #7834 · discourse/discourse · GitHub.

Ранее использовалась опция -p relative, поэтому пути в картах исходного кода выглядели как [‘admin…js.map’]. Начиная с версии 2.4.beta9, опция -p недоступна из-за перехода на uglify 3, поэтому пути в картах исходного кода стали абсолютными, например [‘/var/www/discourse/public/assets/admin…js.map’]. Это приводило к ошибкам 404 при отладке, поскольку фактический файл находился по пути /assets, а карта указывала на /var/www/…/assets.

Я нашел обходное решение: изменить файл lib/tasks/asset.rake, добавив опцию base к параметру карты исходного кода, чтобы это выглядело так:

  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

Я не могу гарантировать, что это сработает для всех, но это позволяет мне отлаживать с помощью карт исходного кода без ошибок 404.

Нам нужно было это исправить, @sam?

Да, мы отслеживаем это в другом месте, добавим заметку в TODO, чтобы @Roman был в курсе.

Извините за задержку, проблема теперь исправлена и перенесена в бета- и стабильную версии. Я добавил атрибут base, который содержит путь к ресурсу, оставив атрибут source только с именем файла.

https://review.discourse.org/t/fix-ensure-sourcemaps-source-is-correct-uses-the-full-assets-path-this-time-8774/8506