サブフォルダへのインストールでソースマップのパスが不適切

My subfolder install kept giving errors in Firefox console about the fact that it is unable to find source maps.

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.map

As you can see, the /community path prefix is missing from the source map URL.

So I did a little digging.

lib/tasks/assets.rake does this:

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

Now cdn_relative_path in lib/global_path.rb looks like this.

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

As you can see, both cdn_path and upload_cdn_path eventually call the path method which makes sure that the subfolder is being prefixed. However, cdn_relative_path does not call the path method, it just returns its parameter (called… path).

BTW I think cdn_path needs to return path(p) in the middle part of the ternary as well?

「いいね!」 1

@sam is the expert on source maps

@david has fussed with this in the past, but yeah getting the paths right for CDN + subfolder is not easy. I am open to a PR that fixes it provided this is very targeted at your magic combo and does not regress any places that work now.

「いいね!」 3

@sam このソースマップが正しくないという問題に対する解決策はありますか?私はサブフォルダインストールとFastly CDNでも同じ問題に直面しています。

私の推奨は、しばらく待ってから行うことです。私たちは Ember CLI へ移行しており、これがこのパイプライン全体を置き換えることになります。

「いいね!」 2

@sam エMBER CLIへの移行はいつ予定されていますか?サブフォルダへのインストールとFastly CDNにおいて、同じ問題が発生しています。

この移行は進行中です。Ember CLI を使ってローカル環境で開発することはすでに可能ですが、本番環境への移行にはあと数ヶ月かかります。

「いいね!」 2

これは ember-cli で解決されるべきだと思いますか? @david ご存知でしたら教えていただけますか?

「いいね!」 2

ここ数週間、ソースマップの改善をいくつか行いました。これは「レガシー」と Ember-CLI の両方のパイプラインに適用されます。

テストに合格したホストされているサブフォルダーサイトの 1 つを確認したところ、物事ははるかにうまく機能しているようです :ok_hand:

「いいね!」 5

このトピックは12日後に自動的に閉じられました。返信はもう許可されていません。