Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Error creating a SourceMapGenerator from a SourceMapConsumer of an index map (part 2)

オープン
#420 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
停滞
技術スタック
javascript
領域
tooling

調査の方向性

lib/source-map-consumer.js の sourceContentFor 実装付近から始め、lib/source-map-generator.js が fromSourceMap からそれを呼び出している流れを追ってください。提供されている index-map 再現コードを実行し、空の sourcesContent エントリが欠落として扱われずに保持されることを確認してください。その際、null または undefined の内容に対する動作は変更しないでください。

索引モデルが issue の本文から書いたものです。

説明

needs-triage
;(async () => {
  let mozilla = require('source-map')
  let map;

  map = {
    version: 3,
    sections: [
      {
        offset: { line: 0, column: 0 },
        map: {
          version: 3,
          sources: ['123', '456'],
          sourcesContent: ['a\nb\nc\n', ''],
          mappings: 'AAAA;AACA;AACA;'
        }
      }
    ]
  }

  // this map works for some reason
  /*map = {
    version: 3,
    sources: ['123', '456'],
    sourcesContent: ['a\nb\nc\n', ''],
    mappings: 'AAAA;AACA;AACA;'
  }*/

  let consumer = await new mozilla.SourceMapConsumer(map)
  consumer.sourceRoot = null; // https://github.com/mozilla/source-map/issues/345
  let generator = mozilla.SourceMapGenerator.fromSourceMap(consumer)
  console.log(generator.toJSON())

})().catch(console.log)

This errors out:

Error: "456" is not in the SourceMap.
    at IndexedSourceMapConsumer.sourceContentFor (/tmp/node_modules/source-map/lib/source-map-consumer.js:840:11)
    at /tmp/node_modules/source-map/lib/source-map-generator.js:82:42
    at Array.forEach (<anonymous>)
    at Function.fromSourceMap (/tmp/node_modules/source-map/lib/source-map-generator.js:72:32)
    at /tmp/123/test.js:29:46

The issue is in here somewhere:

https://github.com/mozilla/source-map/blob/7a263408de1b60e60b6220ca3e36d9b3e4aa047d/lib/source-map-consumer.js#L880

Content is empty - '' - but it is still in the sourcemap. I believe it should be if (content == null) { check, i.e. null or undefined, letting empty string pass along.

this may be related to https://github.com/mozilla/source-map/issues/345, so tagging it just in case

主要言語
JavaScript
スター
3.7k
フォーク
370
PR マージ指標
30日以内にマージされた PR はありません

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

mozilla/source-map のほかの issue

mozilla/source-map の issue をすべて見る

似ている issue

JavaScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。