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

SyntaxError: Unexpected token z in JSON at position 0 #254

Open
provegard opened this issue Oct 12, 2019 · 4 comments · Fixed by 42technologies/node-source-map-support#1 · May be fixed by #283
Open

SyntaxError: Unexpected token z in JSON at position 0 #254

provegard opened this issue Oct 12, 2019 · 4 comments · Fixed by 42technologies/node-source-map-support#1 · May be fixed by #283

Comments

@provegard
Copy link

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 prepareStackTrace method 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.
  • retrieveSourceMapURL extracts 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
danielbayley added a commit to danielbayley/node-source-map-support that referenced this issue Oct 15, 2020
…ebase

This bug was hard to track down! It breaks all my tests, and has been a real hinderance to my _[jest-preset-coffeescript](https://github.com/danielbayley/jest-preset-coffeescript/runs/1254200867?check_suite_focus=true)_ package. Fixes evanw#254.
danielbayley added a commit to danielbayley/source-map that referenced this issue Oct 15, 2020
I'm not sure this is the best fix for this bug, which was hard to track down! But I have also attempted to address it here: https://github.com/evanw/node-source-map-support/pull/283… although looking at the activity on that repo, I don't have much hope of it being merged any time soon… Hence the reason for this PR.

See also: evanw/node-source-map-support#254
danielbayley added a commit to danielbayley/jest-preset-coffeescript that referenced this issue Oct 15, 2020
danielbayley added a commit to danielbayley/jest-preset-coffeescript that referenced this issue Oct 15, 2020
danielbayley added a commit to danielbayley/jest-preset-coffeescript that referenced this issue Oct 16, 2020
@bazineta
Copy link

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.

@MicMonen
Copy link

MicMonen commented Aug 9, 2022

I got the same error using coffee, also don't see the code daniel committed anymore.

@ivands
Copy link

ivands commented Aug 9, 2022

Same error with the coffeescript preset in jest.
Please fix it.

surjikal pushed a commit to 42technologies/source-map that referenced this issue May 1, 2023
I'm not sure this is the best fix for this bug, which was hard to track down! But I have also attempted to address it here: https://github.com/evanw/node-source-map-support/pull/283… although looking at the activity on that repo, I don't have much hope of it being merged any time soon… Hence the reason for this PR.

See also: evanw/node-source-map-support#254
surjikal added a commit to 42technologies/source-map that referenced this issue May 6, 2023
I'm not sure this is the best fix for this bug, which was hard to track down! But I have also attempted to address it here: https://github.com/evanw/node-source-map-support/pull/283… although looking at the activity on that repo, I don't have much hope of it being merged any time soon… Hence the reason for this PR.

See also: evanw/node-source-map-support#254
# Conflicts:
#	lib/util.js
surjikal added a commit to 42technologies/source-map that referenced this issue May 6, 2023
I'm not sure this is the best fix for this bug, which was hard to track down! But I have also attempted to address it here: https://github.com/evanw/node-source-map-support/pull/283… although looking at the activity on that repo, I don't have much hope of it being merged any time soon… Hence the reason for this PR.

See also: evanw/node-source-map-support#254
# Conflicts:
#	lib/util.js
@jolll4
Copy link

jolll4 commented Aug 14, 2024

@evanw Any chance to merge the suggested fix from 42technologies#1? The issue is still occurring.

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