Istanbul: unexpected token esprima.js

Created on 26 Jun 2016  路  7Comments  路  Source: gotwarlost/istanbul

Issue

If there is a reserved keyword in one of the files being covered, then esprima just throws an error stating that an unexpected token was encountered. This makes it very difficult to debug because we aren't given the name of the keyword that was found, and aren't given the name of the offending file. I propose extending the verbose logging to see a stack trace of filenames that were processed.

Context

I'm setting up istanbul/mocha for testing and coverage on a React/Express/NodeJS app, and want to run coverage on all files excluding all react source files.

command

istanbul cover ./node_modules/mocha/bin/_mocha -- --recursive --require ./test/bootstrap.js

.istanbul.yml

verbose: true
instrumentation:
    excludes: ['**/react/**']
    include-all-sources: true
    es-modules: true

Place where esprima is invoked => instrumenter.js line 458

File name is available here, but not logged anywhere, or passed to esprima.

program = ESP.parse(code, {
     loc: true,
     range: true,
     tokens: this.opts.preserveComments,
     comment: true,
     sourceType: this.opts.esModules ? 'module' : 'script'
});

Stack Trace

C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:5703
throw e;
^
Error: Line 3: Unexpected token
at constructError (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:2406:21)
at createError (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:2425:17)
at unexpectedTokenError (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:2499:13)
at tolerateUnexpectedToken (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:2509:21)
at parseStatementListItem (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:3968:21)
at parseFunctionSourceElements (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:4869:23)
at parseFunctionExpression (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:5074:16)
at parsePrimaryExpression (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:3273:24)
at inheritCoverGrammar (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
at parseLeftHandSideExpressionAllowCall (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:3414:20)
at inheritCoverGrammar (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
at parsePostfixExpression (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:3490:16)
at parseUnaryExpression (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:3550:20)
at inheritCoverGrammar (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
at parseBinaryExpression (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:3639:16)
at inheritCoverGrammar (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
at parseConditionalExpression (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:3696:16)
at parseAssignmentExpression (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:3893:16)
at inheritCoverGrammar (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
at parseGroupExpression (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:3162:16)
at inheritCoverGrammar (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
at parsePrimaryExpression (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:3239:20)
at inheritCoverGrammar (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
at parseLeftHandSideExpressionAllowCall (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:3414:20)
at inheritCoverGrammar (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
at parsePostfixExpression (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:3490:16)
at parseUnaryExpression (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:3550:20)
at inheritCoverGrammar (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
at parseBinaryExpression (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:3639:16)
at inheritCoverGrammar (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
at parseConditionalExpression (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:3696:16)
at parseAssignmentExpression (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:3893:16)
at isolateCoverGrammar (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:2663:18)
at parseExpression (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:3942:16)
at parseExpressionStatement (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:4222:20)
at parseStatement (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:4760:24)
at parseStatementListItem (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:3989:16)
at parseScriptBody (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:5490:25)
at parseProgram (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:5506:16)
at Object.parse (C:\dev\git[myproject]\node_modules\istanbul\node_modules\esprima\esprima.js:5690:23)
at Object.Instrumenter.instrumentSync (C:\dev\git[myproject]\node_modules\istanbul\lib\instrumenter.js:458:27)
at C:\dev\git[myproject]\node_modules\istanbul\lib\command\common\run-with-cover.js:224:33
at Array.forEach (native)
at process. (C:\dev\git[myproject]\node_modules\istanbul\lib\command\common\run-with-cover.js:222:39)
at process.g (events.js:260:16)
at emitOne (events.js:77:13)
at process.emit (events.js:169:7)
at process.exit (node.js:749:17)
at done (C:\dev\git[myproject]\node_modules\mocha\bin_mocha:417:32)
at afterWrite (_stream_writable.js:346:3)
at doNTCallbackMany (node.js:463:18)
at process._tickCallback (node.js:361:17)
npm ERR! Test failed. See above for more details.

Most helpful comment

has this been solved yet?

All 7 comments

We are also bumping into this. I guess a dep has changed, worked before clearing node_modules

Hey guys, is this issue resolved?
I too get an unexpected token error (failed to parse file) error when instrumenting js files, since the failed files start with an "import" keyword.
Help?

I have the same issue... Still not resolved?

Error: Line 2813: Unexpected token ILLEGAL
at ErrorHandler.constructError (/home/ubuntu/.nvm/versions/node/v6.11.2/lib/node_modules/lsxc/node_modules/esprima/dist/esprima.js:3396:22)
at ErrorHandler.createError (/home/ubuntu/.nvm/versions/node/v6.11.2/lib/node_modules/lsxc/node_modules/esprima/dist/esprima.js:3414:27)
at ErrorHandler.throwError (/home/ubuntu/.nvm/versions/node/v6.11.2/lib/node_modules/lsxc/node_modules/esprima/dist/esprima.js:3422:21)
at Scanner.throwUnexpectedToken (/home/ubuntu/.nvm/versions/node/v6.11.2/lib/node_modules/lsxc/node_modules/esprima/dist/esprima.js:3505:28)
at Scanner.scanStringLiteral (/home/ubuntu/.nvm/versions/node/v6.11.2/lib/node_modules/lsxc/node_modules/esprima/dist/esprima.js:4292:19)
at Scanner.lex (/home/ubuntu/.nvm/versions/node/v6.11.2/lib/node_modules/lsxc/node_modules/esprima/dist/esprima.js:4604:26)
at Parser.nextToken (/home/ubuntu/.nvm/versions/node/v6.11.2/lib/node_modules/lsxc/node_modules/esprima/dist/esprima.js:634:30)
at Parser.expect (/home/ubuntu/.nvm/versions/node/v6.11.2/lib/node_modules/lsxc/node_modules/esprima/dist/esprima.js:714:27)
at Parser.parseLeftHandSideExpressionAllowCall (/home/ubuntu/.nvm/versions/node/v6.11.2/lib/node_modules/lsxc/node_modules/esprima/dist/esprima.js:1407:23)
at Parser.inheritCoverGrammar (/home/ubuntu/.nvm/versions/node/v6.11.2/lib/node_modules/lsxc/node_modules/esprima/dist/esprima.js:833:37)

Hello,
I am also trying to run unit tests of custom polymer elements using wct instanbul; finding the similar errors in console. Has this been solved yet?

has this been solved yet?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

dcrockwell picture dcrockwell  路  37Comments

schulzch picture schulzch  路  151Comments

briancullinan picture briancullinan  路  22Comments

niftylettuce picture niftylettuce  路  29Comments

blindenvy picture blindenvy  路  19Comments