서브폴더 설치에서 소스 맵 경로 오류

서브폴더 설치 환경에서 Firefox 콘솔에 소스 맵을 찾을 수 없다는 오류가 계속 발생했습니다.

Source map error: request failed with status 404 Resource URL: [https://redacted.com/community/assets/admin-…1d82fc1b0c7d1f24b7b71256a4eb4860f1aa96444925a361d8c24425c.js](https://redacted.com/community/assets/admin-e1c3cbc1d82fc1b0c7d1f24b7b71256a4eb4860f1aa96444925a361d8c24425c.js) Source Map URL: /assets/admin-e1c3cbc1d82fc1b0c7d1f24b7b71256a4eb4860f1aa96444925a361d8c24425c.js

보시다시피, 소스 맵 URL에서 /community 경로 접두사가 빠져 있습니다.

그래서 조금 더 파고들어 봤습니다.

lib/tasks/assets.rake에서는 다음과 같이 처리합니다:

  assets = cdn_relative_path("/assets")
  source_map_root = assets + ((d = File.dirname(from)) == "." ? "" : "/#{d}")

그런데 lib/global_path.rb의 cdn_relative_path는 다음과 같은 형태입니다.

module GlobalPath
  def path(p)
    "#{GlobalSetting.relative_url_root}#{p}"
  end

  def cdn_path(p)
    GlobalSetting.cdn_url.blank? ? p : "#{GlobalSetting.cdn_url}#{path(p)}"
  end

  def upload_cdn_path(p)
    if SiteSetting.Upload.s3_cdn_url.present?
      p = Discourse.store.cdn_url(p)
    end

    (p =~ /^http/ || p =~ /^\/\//) ? p : cdn_path(p)
  end

  def cdn_relative_path(path)
    if (cdn_url = GlobalSetting.cdn_url).present?
      URI.parse(cdn_url).path + path
    else
      path
    end
  end

보시다시피, cdn_path와 upload_cdn_path는 결국 path 메서드를 호출하여 서브폴더가 접두사로 붙도록 보장합니다. 그러나 cdn_relative_path는 path 메서드를 호출하지 않고, 매개변수(이름이 path인)를 그대로 반환합니다.

참고로 cdn_path의 삼항 연산자 중간 부분에서도 path(p)를 반환해야 하는 것 같습니다.

1개의 좋아요

@sam은 소스 맵 전문가입니다

@david는 과거에 이 부분을 다듬은 적이 있지만, CDN + 서브폴더 환경에서 경로를 올바르게 설정하는 것은 쉽지 않습니다. 현재 정상적으로 작동하는 부분에 회귀가 발생하지 않는 한, 해당 문제를 매우 정밀하게 해결하는 PR은 환영합니다.

3개의 좋아요

@sam 잘못된 소스맵 문제와 관련하여 해결책이 있을까요? 서브폴더 설치와 Fastly CDN에서 동일한 문제를 겪고 있습니다.

제 추천은 잠시 기다리는 것입니다. 이 전체 파이프라인을 대체할 ember CLI로 이동을 진행 중입니다.

2개의 좋아요

@sam 언제 ember CLI로 이전할 예정인가요? 서브폴더 설치와 Fastly CDN에서 동일한 문제가 발생하고 있습니다.

이 전환 작업은 진행 중이며, 앞으로 몇 개월 안에 Ember CLI를 사용하여 로컬에서 개발을 시작할 수 있습니다.

2개의 좋아요

이 문제는 ember-cli로 해결할 수 있을 것 같습니다. @david, 혹시 해당 사항인지 아시나요?

2개의 좋아요

네, 지난 몇 주 동안 소스 맵 관련 개선 작업을 여러 건 진행했는데, ‘레거시’ 파이프라인과 Ember-CLI 파이프라인 모두에 적용됩니다.

tests-passed에서 호스팅된 서브폴더 사이트 중 하나를 확인해 봤는데, 훨씬 잘 동작하는 것 같습니다 :ok_hand:

5개의 좋아요

이 주제는 12일 후 자동으로 닫혔습니다. 더 이상 새 답글을 작성할 수 없습니다.