Неверный путь к карте исходного кода в подпапке установки

Моя установка в подпапке постоянно выдавала ошибки в консоли Firefox из-за невозможности найти карты исходного кода.

Ошибка карты исходного кода: запрос не удален со статусом 404 URL ресурса: [https://redacted.com/community/assets/admin-…1d82fc1b0c7d1f24b7b71256a4eb4860f1aa96444925a361d8c24425c.js](https://redacted.com/community/assets/admin-e1c3cbc1d82fc1b0c7d1f24b7b71256a4eb4860f1aa96444925a361d8c24425c.js) URL карты исходного кода: /assets/admin-e1c3cbc1d82fc1b0c7d1f24b7b71256a4eb4860f1aa96444925a361d8c24425c.js.map

Как вы видите, префикс пути /community отсутствует в URL карты исходного кода.

Поэтому я провел небольшое расследование.

lib/tasks/assets.rake делает следующее:

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

А вот как выглядит cdn_relative_path в lib/global_path.rb:

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 — эксперт по source maps

@david уже возился с этим в прошлом, но да, правильно настроить пути для CDN + подпапки непросто. Я открыт к PR, который это исправит, при условии, что он очень точно нацелен на ваше магическое сочетание и не ломает ничего, что сейчас работает.

3 лайка

@sam У нас есть какие-то решения для этой проблемы с неверным source map? У меня та же проблема при установке в подпапку и использовании Fastly CDN

Моя рекомендация — просто подождать некоторое время, мы переходим на Ember CLI, который заменит весь этот конвейер.

2 лайка

@sam Когда мы переходим на Ember CLI? У нас та же проблема с установкой в подпапку и CDN Fastly

Этот переход уже в процессе, вы уже можете разрабатывать локально с помощью ember cli, ещё несколько месяцев до завершения.

2 лайка

Я полагаю, это должно быть решено с помощью ember-cli? @david, не знаешь ли ты, так ли это?

2 лайка

Да, я внес ряд улучшений в source-map за последние несколько недель, которые применяются как к «наследственным» (legacy), так и к пайплайнам Ember-CLI.

Только что проверил один из наших размещённых сайтов в подпапке на tests-passed, и всё работает значительно лучше :ok_hand:

5 лайков

Эта тема была автоматически закрыта через 12 дней. Новые ответы больше не принимаются.