Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sourcemaps not working with @swc-node/register when SWCRC=true #746

Closed
pauliusg opened this issue Jan 4, 2024 · 3 comments
Closed

Sourcemaps not working with @swc-node/register when SWCRC=true #746

pauliusg opened this issue Jan 4, 2024 · 3 comments

Comments

@pauliusg
Copy link

pauliusg commented Jan 4, 2024

I have made minimal reproducible example project only with one source file and empty .swcrc file.
When SWCRC is not set, sourcemap lines are good. But when I set SWCRC=true sourcemap lines are wrong.

Attaching minimal example project: swc-maps-issue.zip

Run without SWCRC: npm run maps-good
Run with SWCRC: npm run maps-bad

My console output:

C:\Temp\swc-maps-issue>npm run maps-good

> maps-good
> cross-env SWCRC= node --enable-source-maps -r @swc-node/register src/index-dev.ts

c:\Temp\swc-maps-issue\src\index-dev.ts:8
    throw new Error('Test @swc-node/register');
          ^


Error: Test @swc-node/register
    at C:\Temp\swc-maps-issue\src\index-dev.ts:8:11
    at Object.<anonymous> (C:\Temp\swc-maps-issue\src\index-dev.ts:12:1)
    at Module._compile (node:internal/modules/cjs/loader:1356:14)
    at Module._compile (C:\Temp\swc-maps-issue\node_modules\pirates\lib\index.js:117:24)
    at Module._extensions..js (node:internal/modules/cjs/loader:1414:10)
    at Object.newLoader [as .ts] (C:\Temp\swc-maps-issue\node_modules\pirates\lib\index.js:121:7)
    at Module.load (node:internal/modules/cjs/loader:1197:32)
    at Function.Module._load (node:internal/modules/cjs/loader:1013:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:128:12)
    at node:internal/main/run_main_module:28:49

Node.js v18.19.0

C:\Temp\swc-maps-issue>npm run maps-bad

> maps-bad
> cross-env SWCRC=true node --enable-source-maps -r @swc-node/register src/index-dev.ts

c:\Temp\swc-maps-issue\src\index-dev.ts:8
    throw new Error('Test @swc-node/register');
          ^


Error: Test @swc-node/register
    at C:\Temp\swc-maps-issue\src\index-dev.ts:130:15
    at step (C:\Temp\swc-maps-issue\src\index-dev.ts:108:23)
    at Object.next (C:\Temp\swc-maps-issue\src\index-dev.ts:49:20)
    at asyncGeneratorStep (C:\Temp\swc-maps-issue\src\index-dev.ts:3:28)
    at _next (C:\Temp\swc-maps-issue\src\index-dev.ts:21:17)
    at C:\Temp\swc-maps-issue\src\index-dev.ts:26:13
    at new Promise (<anonymous>)
    at C:\Temp\swc-maps-issue\src\index-dev.ts:18:16
    at Object.<anonymous> (C:\Temp\swc-maps-issue\src\index-dev.ts:133:3)
    at Module._compile (node:internal/modules/cjs/loader:1356:14)

Node.js v18.19.0

package.json:

{
    "name": "bad-sourcemaps-with-SWCRC-example",
    "description": "",
    "private": true,
    "engines": {
        "node": ">=18.19.x <19"
    },
    "scripts": {
        "maps-good": "cross-env SWCRC= node --enable-source-maps -r @swc-node/register src/index-dev.ts",
        "maps-bad": "cross-env SWCRC=true node --enable-source-maps -r @swc-node/register src/index-dev.ts"
    },
    "devDependencies": {
        "@swc-node/register": "^1.6.8",
        "@swc/cli": "^0.1.63",
        "@swc/core": "^1.3.102",
        "cross-env": "^7.0.3",
        "typescript": "^5.1.3"
    }
}

tsconfig.json:

{
    "compilerOptions": {
        "module": "commonjs",
        "esModuleInterop": true,
        "allowSyntheticDefaultImports": true,
        "noEmit": true,
        "noImplicitAny": false,
        "moduleResolution": "node",
        "resolveJsonModule": true,
        "skipLibCheck": true,
        "strictBindCallApply": true,
        "sourceMap": true,
        "strict": true,
        "outDir": "dist",
        "baseUrl": "./src"
    },
    "include": ["**/*"]
}

.swcrc:

{
    "$schema": "https://json.schemastore.org/swcrc",
}

index-dev.ts:

// Just a comment

(async () => {
    // Just a comment
    // Just a comment


    throw new Error('Test @swc-node/register');

    
    // Just a comment
})();
@dsyddall
Copy link
Contributor

Possibly a duplicate of #741?

The issue was fixed in #742, but the changes have not yet been released.

@pauliusg
Copy link
Author

I can confirm that issue swill exists with @swc-node/register@1.8.0. This release includes @dsyddall mentioned fix #742.

Updated package.json:

{
    "name": "bad-sourcemaps-with-SWCRC-example",
    "description": "",
    "private": true,
    "engines": {
        "node": ">=18.19.x <19"
    },
    "scripts": {
        "maps-good": "cross-env SWCRC= node --enable-source-maps -r @swc-node/register src/index-dev.ts",
        "maps-bad": "cross-env SWCRC=true node --enable-source-maps -r @swc-node/register src/index-dev.ts"
    },
    "devDependencies": {
        "@swc-node/register": "^1.8.0",
        "@swc/cli": "^0.3.10",
        "@swc/core": "^1.4.2",
        "cross-env": "^7.0.3",
        "typescript": "^5.1.3"
    }
}

Attaching updated (with new swc-node version) minimal example project: swc-maps-issue-updated.zip

@pauliusg
Copy link
Author

pauliusg commented Feb 28, 2024

Another update, I can achieve good source maps with some additional configuration in .swcrc file.
Source maps are bad, when .swcrc file is empty:

{
    "$schema": "https://json.schemastore.org/swcrc",
}

Source maps are good, when I add this configuration:

{
    "$schema": "https://json.schemastore.org/swcrc",
    "jsc": {
        "target": "esnext"
    },
    "sourceMaps": true
}

Probably we still can consider that issue is not fixed as it should behave the same either SWCRC file is not used or using empty SWCRC file.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

3 participants