Repository navigation
SyntaxError: Unexpected token z in JSON at position 0 #254
Copy link
Copy link
Open
42technologies/node-source-map-support
#1Description
I have the following situation:
- I start Karma with `node --require coffeescript/register' since my Karma config is in CoffeeScript
- Karma loads ts-node to support TypeScript modules
- I have a custom Karma preprocessor for compiling CoffeeScript, since karma-coffee-preprocessor doesn't support CoffeeScript 2.
- I configure CoffeeScript to transpile the resulting JS code with Babel
- I use Babel's preset-env
- Babel loads a plugin, plugin-proposal-async-generator-functions, which uses @babel/template which creates a stack trace by throwing and catching an Error (inside a function called
extendedTrace). - When this happens, source-map-support's
prepareStackTracemethod is called, since source-map-support is used by ts-node. - source-map-support encounters coffeescript.js in the call stack (since the Error is thrown inside Babel which is invoked from CoffeeScript).
- coffeescript.js contains code for emitting source maps, so it contains code that matches the regular expression used by
retrieveSourceMapURL. retrieveSourceMapURLextracts the following source map from coffeescript.js: "zw(u�"- This string is passed to source-map which tries to parse it as JSON in
parseSourceMapInput. - At this point, bad things happen. :-)
I created a git repo that demonstrates the problem: https://github.com/provegard/sourcemap-bug
Clone it, run npm install and then npm test. It produces the following output:
undefined:1
zw(u�
^
SyntaxError: Unexpected token z in JSON at position 0
at JSON.parse (<anonymous>)
at Object.parseSourceMapInput (C:\kod\projects\sourcemap-bug\node_modules\source-map-support\node_modules\source-map\lib\util.js:433:15)
at new SourceMapConsumer (C:\kod\projects\sourcemap-bug\node_modules\source-map-support\node_modules\source-map\lib\source-map-consumer.js:17:22)
at mapSourcePosition (C:\kod\projects\sourcemap-bug\node_modules\source-map-support\source-map-support.js:190:14)
at wrapCallSite (C:\kod\projects\sourcemap-bug\node_modules\source-map-support\source-map-support.js:358:20)
at C:\kod\projects\sourcemap-bug\node_modules\source-map-support\source-map-support.js:399:26
at Array.map (<anonymous>)
at Function.prepareStackTrace (C:\kod\projects\sourcemap-bug\node_modules\source-map-support\source-map-support.js:398:30)
at prepareStackTrace (internal/errors.js:30:29)
at process.emit (C:\kod\projects\sourcemap-bug\node_modules\source-map-support\source-map-support.js:457:52)
at process._fatalException (internal/process/execution.js:146:25)
If I modify retrieveSourceMapURL to print lastMatch, I get:
[
'//# sourceMappingURL=data:application/json;base64,${encoded}`;',
'data:application/json;base64,${encoded}`;',
undefined,
index: 8757,
Versions:
- Node v12.5.0
- npm 6.9.2
- source-map-support: 0.5.13
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
Fix retrieveSourceMapURL to prevent false matches in CoffeeScript cod…
Ignore false matches from CoffeeScript codebase
Fix CI
Fix CI
Fix source-map-support bug
bazineta commentedon Mar 20, 2021
I landed here after just a lot of failing to get a coffeescript preset working with Jest. The one-liner provided by @danielbayley works for us.
weewoo64 commentedon Aug 9, 2022
I got the same error using coffee, also don't see the code daniel committed anymore.
ivands commentedon Aug 9, 2022
Same error with the coffeescript preset in jest.
Please fix it.
Ignore false matches from CoffeeScript codebase
Ignore false matches from CoffeeScript codebase
Ignore false matches from CoffeeScript codebase
jolll4 commentedon Aug 14, 2024
@evanw Any chance to merge the suggested fix from 42technologies#1? The issue is still occurring.