Skip to content

Incorrect source map parsing? #1

@magnusottosson

Description

@magnusottosson

Hi,

I'm trying to trace a stacktrace for a script that has been created by webpack. The stacktrace comes from server side rendering this using ReactJS.NET and "V8JsEngine".

The original stacktrace looks like

at useFilterQs (hbd-ssr.1d6f13df.js:283:9)
    at ProductList (hbd-ssr.1d6f13df.js:4774:79)
    at processChild (hbd-ssr.1d6f13df.js:56618:14)
    at resolve (hbd-ssr.1d6f13df.js:56535:5)
    at render (hbd-ssr.1d6f13df.js:57010:22)
    at read (hbd-ssr.1d6f13df.js:56948:29)
    at renderToString (hbd-ssr.1d6f13df.js:57563:27)
    at Script [3]:1:16

Using this library I get:

test at Error (webpack:///../src/UI/hbd-ui/src/base/hooks/use-filter-qs.ts:14:11)
 at webpack:///../src/UI/hbd-ui/src/components/products/list/index.tsx:79:25
 at webpack:///../node_modules/react-dom/cjs/react-dom-server.browser.development.js:3042:1
 at webpack:///../node_modules/react-dom/cjs/react-dom-server.browser.development.js:2959:1
 at webpack:///../node_modules/react-dom/cjs/react-dom-server.browser.development.js:3434:1
 at webpack:///../node_modules/react-dom/cjs/react-dom-server.browser.development.js:3372:1
 at webpack:///../node_modules/react-dom/cjs/react-dom-server.browser.development.js:3987:1
 at Script ([3]:1:16)

If I instead of rendering this on the server let the client render I get the following stacktrace:

Uncaught Error: test
    at useFilterQs (use-filter-qs.ts:14)
    at ProductList (index.tsx:79)
    at renderWithHooks (react-dom.development.js:14803)
    at mountIndeterminateComponent (react-dom.development.js:17482)
    at beginWork (react-dom.development.js:18596)
    at HTMLUnknownElement.callCallback (react-dom.development.js:188)
    at Object.invokeGuardedCallbackDev (react-dom.development.js:237)
    at invokeGuardedCallback (react-dom.development.js:292)
    at beginWork$1 (react-dom.development.js:23203)
    at performUnitOfWork (react-dom.development.js:22154)

It seems like I'm loosing the function names? I tried validating this using tools like stacktracify (https://github.com/mifi/stacktracify). This tools gives me the same result as you library. This lead me to that maybe its a webpack problem. But it seems like the browser is able to parse the source map correclty. Is is it just doing something else to make it work?

I can see that the Frame has the correct method names but it get overriden by the OriginalName property from the SourceMapMappingEntry. Is this correct?

{SourceMaps.SourceMapMappingEntry}
    GeneratedColumnNumber: 74
    GeneratedLineNumber: 88920
    OriginalColumnNumber: 31
    OriginalFileName: "webpack:///../src/UI/hbd-ui/src/base/hooks/use-filter-qs.ts"
    OriginalLineNumber: 13
    OriginalName: "location"

{SourceMaps.SourceMapMappingEntry}
    GeneratedColumnNumber: 85
    GeneratedLineNumber: 93715
    OriginalColumnNumber: 24
    OriginalFileName: "webpack:///../src/UI/hbd-ui/src/components/products/list/index.tsx"
    OriginalLineNumber: 78
    OriginalName: null
frame.File = originalPosition?.OriginalFileName;
frame.Method = originalPosition?.OriginalName;
frame.LineNumber = originalPosition?.OriginalLineNumber + 1;
frame.ColumnNumber = originalPosition?.OriginalColumnNumber + 1;

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions