генерировать исходную карту на основе JavaScript с использованием source-map в node.js

#javascript #node.js #source-maps

#javascript #node.js #исходные карты

Вопрос:

что бы я ни делал, карта пуста в map.toString().

 let path = require("path");
let content = fs.readFileSync(".\"   file, "utf8");
let filename = path.basename(outFile)
const { code } = js(content);

fs.writeFileSync(outFile, content);
fs.writeFileSync(outMinFile, code);

let gen = new sm.SourceMapGenerator({
    file: filename,
    sourceRoot: "./",
});

gen.setSourceContent("CMS.Layout.js", content);

fs.writeFileSync(outMap, gen.toString());
  

результаты в:

 {"version":3,"sources":[],"names":[],"mappings":"","file":"CMS.Layout.js","sourceRoot":"./","sourcesContent":[]}
  

что я делаю не так?

Комментарии:

1. где sm установлено?

2. @LawrenceCherone в верхней части файла. var sm = требовать(«сгенерировать исходную карту»);

3. это не в вопросе, не следует предполагать, что люди знают, какую библиотеку вы используете, как вы ее загружаете .. учитывая, что вопрос о том, почему new sm.SourceMapGenerator не работает

4. кроме того, как она инициализировала js переменную? Со своей стороны я протестировал использование generate-source-map , но не повезло с синтаксисом ES6 (?): строки с обратными кавычками выдают ошибку. Неудивительно, поскольку generate-source-map она была опубликована 6 лет назад, но я не знаю, какую эквивалентную библиотеку я мог бы использовать.

Ответ №1:

Я заменил source-map на generate-source-map. намного проще, и это сработало с первой попытки.

 let path = require("path");
let content = fs.readFileSync(".\"   file, "utf8");
let filename = path.basename(outFile)
const { code } = js(content);

fs.writeFileSync(outFile, content);
fs.writeFileSync(outMinFile, code);

let fl = {
    source: content,
    sourceFile: filename
};

let map = sm(fl);

fs.writeFileSync(outMap, map.toString());