Skip to content

Commit ed9328d

Browse files
tripodsanCopilot
andcommitted
fix: use file URL as source map root on windows
Windows paths like D:\foo were parsed as URLs with a 'd:' scheme by source-map, causing 'Invalid URL' errors. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 29180f2 commit ed9328d

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

‎src/compiler/Compiler.js‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
/* eslint-disable no-await-in-loop */
1414

1515
const path = require('path');
16+
const { pathToFileURL } = require('url');
1617
const fse = require('fs-extra');
1718
const { SourceMapGenerator } = require('source-map');
1819
const TemplateParser = require('../parser/html/TemplateParser');
@@ -461,8 +462,10 @@ module.exports = class Compiler {
461462

462463
let sourceMap = null;
463464
if (mappings) {
465+
// source maps use URLs; windows paths like `C:\foo` would be parsed as a `c:` scheme
466+
const isWin = path.sep === '\\';
464467
const generator = new SourceMapGenerator({
465-
sourceRoot: baseDir,
468+
sourceRoot: isWin ? pathToFileURL(baseDir).href : baseDir,
466469
});
467470
mappings.forEach((mapping) => {
468471
// eslint-disable-next-line no-param-reassign
@@ -476,7 +479,8 @@ module.exports = class Compiler {
476479
});
477480
sourceMap = generator.toJSON();
478481
// relativize source files
479-
sourceMap.sources = sourceMap.sources.map((file) => path.relative(baseDir, file));
482+
sourceMap.sources = sourceMap.sources
483+
.map((file) => path.relative(baseDir, file).split(path.sep).join('/'));
480484
}
481485
return { template, sourceMap };
482486
}

0 commit comments

Comments
 (0)