Skip to content

SSR source map merging fails on empty file segments (Error: No element indexed by 0) #2391

@GrygrFlzr

Description

@GrygrFlzr

Describe the bug

The following source map merging:

let map = s.generateMap({ hires: true })
if (inMap && inMap.mappings) {
map = merge(inMap, {
...map,
sources: inMap.sources,
sourcesContent: inMap.sourcesContent
}) as SourceMap

Given an empty input will throw an error:

Dev mode log
$ pnpm dev

> sourcemap-repro@1.0.0 dev C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro
> node server

Error: No element indexed by 0
    at ArraySet$2.ArraySet_at [as at] (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:24278:9)
    at BasicSourceMapConsumer.<anonymous> (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:25193:67)
    at Array.map (<anonymous>)
    at BasicSourceMapConsumer.SourceMapConsumer_eachMapping [as eachMapping] (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:25192:14)
    at merge (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:26656:18)
    at ssrTransform (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:61382:15)
    at transformRequest (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:61650:48)
    at async instantiateModule (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:67994:10)
Error: No element indexed by 0
    at ArraySet$2.ArraySet_at [as at] (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:24278:9)
    at BasicSourceMapConsumer.<anonymous> (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:25193:67)
    at Array.map (<anonymous>)
    at BasicSourceMapConsumer.SourceMapConsumer_eachMapping [as eachMapping] (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:25192:14)
    at merge (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:26656:18)
    at ssrTransform (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:61382:15)
    at transformRequest (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:61650:48)
    at async instantiateModule (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:67994:10)
Error: No element indexed by 0
    at ArraySet$2.ArraySet_at [as at] (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:24278:9)
    at BasicSourceMapConsumer.<anonymous> (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:25193:67)
    at Array.map (<anonymous>)
    at BasicSourceMapConsumer.SourceMapConsumer_eachMapping [as eachMapping] (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:25192:14)
    at merge (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:26656:18)
    at ssrTransform (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:61382:15)
    at transformRequest (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:61650:48)
    at async instantiateModule (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:67994:10)
Error: No element indexed by 0
    at ArraySet$2.ArraySet_at [as at] (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:24278:9)
    at BasicSourceMapConsumer.<anonymous> (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:25193:67)
    at Array.map (<anonymous>)
    at BasicSourceMapConsumer.SourceMapConsumer_eachMapping [as eachMapping] (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:25192:14)
    at merge (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:26656:18)
    at ssrTransform (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:61382:15)
    at transformRequest (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:61650:48)
    at async instantiateModule (C:\Users\GrygrFlzr\Documents\projects\sourcemap-repro\node_modules\.pnpm\vite@2.0.5\node_modules\vite\dist\node\chunks\dep-e0f09032.js:67994:10)

Important to note here that merge is an import from merge-source-map, which has not been maintained since December 2017. A somewhat (?) related bug report from May 2018 was already filed on its repo: keik/merge-source-map#6, but with no response. This is why I am bringing up the issue in the vite repository instead, as I do not think it is solvable on the upstream dependency.

Reproduction

https://github.com/GrygrFlzr/vite-sourcemap-repro

git clone https://github.com/GrygrFlzr/vite-sourcemap-repro.git
cd vite-sourcemap-repro
pnpm install
pnpm dev
# load the page on http://localhost:3000

System Info

  • vite version: 2.0.5
  • Operating System: Windows 10 10.0.19042
  • Node version: 14.15.3
  • Package manager (npm/yarn/pnpm) and version: npm 7.5.2 / yarn 1.22.10 / pnpm 5.18.1

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions