get-source icon indicating copy to clipboard operation
get-source copied to clipboard

Cannot resolve HTTP sourcemaps in Node

Open nolanlawson opened this issue 2 years ago • 0 comments

Hi, I noticed that I seem to be unable to resolve sourcemaps in Node. Here is a full repro with repro steps.

Notice that, in my repro web app, Chrome is able to parse the stacktrace for script.min.js (source: script.js), so the sourcemap seems to be configured correctly:

Screenshot from 2021-12-26 20-59-24

Yet, in Node.js, when I run:


const stacktrace = "Error\n    at http://localhost:3000/script.min.js:1:29"
console.log(new Stacktracey(stacktrace).withSources().asTable())

The output is:

at   script.min.js:1

Note that it says script.min.js, not script.js.

I believe I've tracked it down to these lines of code:

https://github.com/xpl/get-source/blob/02d7eecfef4b3a3efa0621d93f6e5a2e8d2321a0/get-source.js#L146

https://github.com/xpl/get-source/blob/02d7eecfef4b3a3efa0621d93f6e5a2e8d2321a0/get-source.js#L169

Note that, in the browser version of the code, it does an XHR to fetch the path – i.e. it assumes it's a URL, not a filepath. But in Node, it assumes it's a filepath. So we get a "no such file or directory" error:

Screenshot from 2021-12-26 21-03-01

It seems to me that the Node code should be making an HTTP request rather than doing fs.readFile / fs.readFileSync, similar to what it does in the browser.

nolanlawson avatar Dec 27 '21 05:12 nolanlawson