I keep reading that source maps are natively supported in Node. But I don't understand how I can use the source maps when printing an error to the console.
I have tried running node with --enable-source-maps
, and I also tried the source-map-support
package. But to no avail. The output in the console is only showing the transpiled js code, not the ts source code.
What am I doing wrong?
Source code:
// main.ts
const someError = new Error()
console.error(someError.stack)
Console output (from VS Code):
/home/birger/.nvm/versions/node/v16.16.0/bin/node ./build/main.js -r source-map-support/register
Error
at Object.<anonymous> (/home/birger/someproject/build/main.js:8:19)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47
Here is my tsconfig.json:
// tsconfig.json
{
"compilerOptions": {
"target": "ES2022",
"module": "commonjs",
"sourceMap": true,
"strict": true,
"outDir": "build",
}
}
Turns out you need to have the --enable-source-maps
in front of the file argument.
So this works:
node --enable-source-maps somescript.js
But this won't:
node somescript.js --enable-source-maps
🤦