BS4 드롭다운이 작동하지 않는 문제를 디버깅하던 중, 클릭 시 _ember_jquery.js가 실제로 위치해 있는 /assets 경로가 아니라 /assets/var/www/discourse/public/assets 경로에서 호출되는 것을 발견했습니다. 왜 전체 서버 경로가 추가되는지 알 수 없습니다. 제 지식范围内에서 관련 설정 변경은 없었으며, 제가 작업한 것은 단순한 커스텀 플러그인을 추가한 것뿐입니다(플러그인을 제거해도 문제가 지속됩니다). 저는 Discourse를 처음 사용하는 편이라, 이 문제에 대한 여러분의 의견을 매우 감사히 여깁니다. 추가 정보가 필요하시다면 알려주세요.
소스 맵이 생성되는 방식에 문제가 있다고 생각합니다. 이 문제는 다음 PR에서 비롯된 것입니다: DEV: Bump uglifyjs - Pull Request #7834 - discourse/discourse - GitHub.
이전에는 -p relative 옵션이 사용되어 소스 맵 경로가 [‘admin…js.map’] 형태였습니다. 2.4.beta9부터 uglify 3로의 변경으로 인해 -p 옵션을 사용할 수 없게 되면서, 소스 맵 경로는 [‘/var/www/discourse/public/assets/admin…js.map’]과 같은 절대 경로가 되었습니다. 이로 인해 디버깅 중에 실제 파일은 /assets에 위치해 있는데 소스 맵은 /var/www/…/assets에 있다고 표시되어 404 오류가 발생했습니다.
제가 찾은 임시 해결책은 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 속성에는 파일명만 남겼습니다.