ampproject / remapping

Remap sequential sourcemaps through transformations to point at the original source code
Apache License 2.0
109 stars 26 forks source link

Version 2.30 -> TypeError: Cannot read properties of undefined (reading 'map') #193

Open JarekToro opened 2 months ago

JarekToro commented 2 months ago

This seems familiar but not the same as these issues. The issues below mention how @jridgewell/trace-mapping had a bug that caused this. And you need a newer version. I have the newest version and am still having the problem.

https://github.com/ampproject/remapping/issues/163 https://github.com/ampproject/remapping/issues/158

I have these versions "name": "@ampproject/remapping", "version": "2.3.0",

"name": "@jridgewell/trace-mapping", "version": "0.3.25",

This is the thrown error

TypeError: Cannot read properties of undefined (reading 'map')
 ❯ originalPositionFor node_modules/@ampproject/remapping/dist/remapping.mjs:78:17
 ❯ originalPositionFor node_modules/@ampproject/remapping/dist/remapping.mjs:89:12
 ❯ traceMappings node_modules/@ampproject/remapping/dist/remapping.mjs:53:26
 ❯ remapping node_modules/@ampproject/remapping/dist/remapping.mjs:197:26
 ❯ excludeGeneratedCode node_modules/@vitest/coverage-v8/dist/provider.js:2632:23
 ❯ V8CoverageProvider.getSources node_modules/@vitest/coverage-v8/dist/provider.js:2567:20
 ❯ node_modules/@vitest/coverage-v8/dist/provider.js:2502:38
 ❯ V8CoverageProvider.getUntestedFiles node_modules/@vitest/coverage-v8/dist/provider.js:2500:25
 ❯ V8CoverageProvider.generateCoverage node_modules/@vitest/coverage-v8/dist/provider.js:2389:32
 ❯ node_modules/vitest/dist/chunks/cli-api.OKfd3qJ0.js:14947:24
 ❯ Vitest.runFiles node_modules/vitest/dist/chunks/cli-api.OKfd3qJ0.js:14955:12
 ❯ Vitest.start node_modules/vitest/dist/chunks/cli-api.OKfd3qJ0.js:14804:7
 ❯ startVitest node_modules/vitest/dist/chunks/cli-api.OKfd3qJ0.js:15893:7
 ❯ start node_modules/vitest/dist/chunks/cac.DGgmCKmU.js:1499:17
 ❯ CAC.run node_modules/vitest/dist/chunks/cac.DGgmCKmU.js:1479:3
JarekToro commented 2 months ago

in remapping.mjs I added a null check on source. It seems to solve the issues im running into.

function originalPositionFor(source, line, column, name) {
   + if (!source){
   +    return null
   +  }
    if (!source.map) {
        return SegmentObject(source.source, line, column, name, source.content, source.ignore);
    }
    const segment = traceSegment(source.map, line, column);
    // If we couldn't find a segment, then this doesn't exist in the sourcemap.
    if (segment == null)
        return null;
    // 1-length segments only move the current generated column, there's no source information
    // to gather from it.
    if (segment.length === 1)
        return SOURCELESS_MAPPING;
    return originalPositionFor(source.sources[segment[1]], segment[2], segment[3], segment.length === 5 ? source.map.names[segment[4]] : name);
}
yumauri commented 2 months ago

Encountered the same issue with vitest. It is strange though, that issue happens only in workspace environment in my case. Adding source null check solves issue as well.

jnhooper commented 6 days ago

in case anyone else ends up here, this was fixed for me by upgrading vitest from 1 to 2.1.4