"Unexpected token" error - Drop Esprima dependency?
See original GitHub issueTechnically this is an Esprima bug, but I do report this here because Esprima seems to be outdated in general and does not support modern JavaScript. I’ve heard about the Fork Espree, but thats just a suggestion.
Expected Behavior
ui5 build
should compile modern JavaScript code.
Current Behavior
The build fails if it encounters a spread operator.
Steps to reproduce the issue
- Copy the following snippet in any UI5 project
const foo = {
1: 1, 2: 2, 3: 3
}
const bar = {
...foo
}
- run
ui5 build
- It fails with the log below. The process returns 0 and states “Build succeeded”, but the parsing error happens and the WebIDE cancels the build process.
Context
- UI5 Module Version (output of
ui5 --version
when using the CLI):2.4.2
- Node.js Version:
v12.10.0
- npm Version:
6.13.4
- OS/Platform:
Windows and WebIDE
Affected components (if known)
Log Output / Stack Trace
info normalizer:translators:ui5Framework Using OpenUI5 version: 1.81.2
info builder:builder Building project openui5-sample-app not including dependencies...
info builder:builder � (1/1) Building project openui5-sample-app
info builder:builder application openui5-sample-app � (1/8) Running task escapeNonAsciiCharacters...
info builder:builder application openui5-sample-app � (2/8) Running task replaceCopyright...
info builder:builder application openui5-sample-app � (3/8) Running task replaceVersion...
info builder:builder application openui5-sample-app � (4/8) Running task generateFlexChangesBundle...
info builder:builder application openui5-sample-app � (5/8) Running task generateComponentPreload...
ERR! lbt:resources:ResourcePool Error: Line 17: Unexpected token ...
ERR! lbt:resources:ResourcePool at ErrorHandler.constructError (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:5012:22)
ERR! lbt:resources:ResourcePool at ErrorHandler.createError (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:5028:27)
ERR! lbt:resources:ResourcePool at Parser.unexpectedTokenError (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:1985:39)
ERR! lbt:resources:ResourcePool at Parser.throwUnexpectedToken (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:1995:21)
ERR! lbt:resources:ResourcePool at Parser.parseObjectPropertyKey (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:2499:33)
ERR! lbt:resources:ResourcePool at Parser.parseObjectProperty (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:2534:25)
ERR! lbt:resources:ResourcePool at Parser.parseObjectInitializer (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:2602:35)
ERR! lbt:resources:ResourcePool at Parser.inheritCoverGrammar (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:2285:37)
ERR! lbt:resources:ResourcePool at Parser.parsePrimaryExpression (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:2354:38)
ERR! lbt:resources:ResourcePool at Parser.inheritCoverGrammar (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:2285:37)
ERR! lbt:resources:ResourcePool at Parser.parseLeftHandSideExpressionAllowCall (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:2899:26)
ERR! lbt:resources:ResourcePool at Parser.inheritCoverGrammar (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:2285:37)
ERR! lbt:resources:ResourcePool at Parser.parseUpdateExpression (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:3004:26)
ERR! lbt:resources:ResourcePool at Parser.parseUnaryExpression (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:3048:26)
ERR! lbt:resources:ResourcePool at Parser.inheritCoverGrammar (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:2285:37)
ERR! lbt:resources:ResourcePool at Parser.parseExponentiationExpression (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:3054:26)
ERR! lbt:resources:ResourcePool failed to parse or analyze %s: sap/ui/demo/todo/controller/App.controller.js Error: Line 17: Unexpected token ...
ERR! lbt:resources:ResourcePool at ErrorHandler.constructError (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:5012:22)
ERR! lbt:resources:ResourcePool at ErrorHandler.createError (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:5028:27)
ERR! lbt:resources:ResourcePool at Parser.unexpectedTokenError (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:1985:39)
ERR! lbt:resources:ResourcePool at Parser.throwUnexpectedToken (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:1995:21)
ERR! lbt:resources:ResourcePool at Parser.parseObjectPropertyKey (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:2499:33)
ERR! lbt:resources:ResourcePool at Parser.parseObjectProperty (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:2534:25)
ERR! lbt:resources:ResourcePool at Parser.parseObjectInitializer (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:2602:35)
ERR! lbt:resources:ResourcePool at Parser.inheritCoverGrammar (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:2285:37)
ERR! lbt:resources:ResourcePool at Parser.parsePrimaryExpression (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:2354:38)
ERR! lbt:resources:ResourcePool at Parser.inheritCoverGrammar (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:2285:37)
ERR! lbt:resources:ResourcePool at Parser.parseLeftHandSideExpressionAllowCall (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:2899:26)
ERR! lbt:resources:ResourcePool at Parser.inheritCoverGrammar (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:2285:37)
ERR! lbt:resources:ResourcePool at Parser.parseUpdateExpression (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:3004:26)
ERR! lbt:resources:ResourcePool at Parser.parseUnaryExpression (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:3048:26)
ERR! lbt:resources:ResourcePool at Parser.inheritCoverGrammar (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:2285:37)
ERR! lbt:resources:ResourcePool at Parser.parseExponentiationExpression (xxxnode_modules\@ui5\cli\node_modules\esprima\dist\esprima.js:3054:26) {
ERR! lbt:resources:ResourcePool index: 372,
ERR! lbt:resources:ResourcePool lineNumber: 17,
ERR! lbt:resources:ResourcePool description: 'Unexpected token ...',
ERR! lbt:resources:ResourcePool stack: 'Error: Line 17: Unexpected token ...\n' +
ERR! lbt:resources:ResourcePool ' at ErrorHandler.constructError (xxxnode_modules\\@ui5\\cli\\node_modules\\esprima\\dist\\esprima.js:5012:22)\n' +
ERR! lbt:resources:ResourcePool ' at ErrorHandler.createError (xxxnode_modules\\@ui5\\cli\\node_modules\\esprima\\dist\\esprima.js:5028:27)\n' +
ERR! lbt:resources:ResourcePool ' at Parser.unexpectedTokenError (xxxnode_modules\\@ui5\\cli\\node_modules\\esprima\\dist\\esprima.js:1985:39)\n' +
ERR! lbt:resources:ResourcePool ' at Parser.throwUnexpectedToken (xxxnode_modules\\@ui5\\cli\\node_modules\\esprima\\dist\\esprima.js:1995:21)\n' +
ERR! lbt:resources:ResourcePool ' at Parser.parseObjectPropertyKey (xxxnode_modules\\@ui5\\cli\\node_modules\\esprima\\dist\\esprima.js:2499:33)\n' +
ERR! lbt:resources:ResourcePool ' at Parser.parseObjectProperty (xxxnode_modules\\@ui5\\cli\\node_modules\\esprima\\dist\\esprima.js:2534:25)\n' +
ERR! lbt:resources:ResourcePool ' at Parser.parseObjectInitializer (xxxnode_modules\\@ui5\\cli\\node_modules\\esprima\\dist\\esprima.js:2602:35)\n' +
ERR! lbt:resources:ResourcePool ' at Parser.inheritCoverGrammar (xxxnode_modules\\@ui5\\cli\\node_modules\\esprima\\dist\\esprima.js:2285:37)\n' +
ERR! lbt:resources:ResourcePool ' at Parser.parsePrimaryExpression (xxxnode_modules\\@ui5\\cli\\node_modules\\esprima\\dist\\esprima.js:2354:38)\n' +
ERR! lbt:resources:ResourcePool ' at Parser.inheritCoverGrammar (xxxnode_modules\\@ui5\\cli\\node_modules\\esprima\\dist\\esprima.js:2285:37)\n' +
ERR! lbt:resources:ResourcePool ' at Parser.parseLeftHandSideExpressionAllowCall (xxxnode_modules\\@ui5\\cli\\node_modules\\esprima\\dist\\esprima.js:2899:26)\n' +
ERR! lbt:resources:ResourcePool ' at Parser.inheritCoverGrammar (xxxnode_modules\\@ui5\\cli\\node_modules\\esprima\\dist\\esprima.js:2285:37)\n' +
ERR! lbt:resources:ResourcePool ' at Parser.parseUpdateExpression (xxxnode_modules\\@ui5\\cli\\node_modules\\esprima\\dist\\esprima.js:3004:26)\n' +
ERR! lbt:resources:ResourcePool ' at Parser.parseUnaryExpression (xxxnode_modules\\@ui5\\cli\\node_modules\\esprima\\dist\\esprima.js:3048:26)\n' +
ERR! lbt:resources:ResourcePool ' at Parser.inheritCoverGrammar (xxxnode_modules\\@ui5\\cli\\node_modules\\esprima\\dist\\esprima.js:2285:37)\n' +
ERR! lbt:resources:ResourcePool ' at Parser.parseExponentiationExpression (xxxnode_modules\\@ui5\\cli\\node_modules\\esprima\\dist\\esprima.js:3054:26)'
ERR! lbt:resources:ResourcePool }
info builder:builder application openui5-sample-app � (6/8) Running task createDebugFiles...
info builder:builder application openui5-sample-app � (7/8) Running task uglify...
info builder:builder application openui5-sample-app � (8/8) Running task generateVersionInfo...
info builder:builder Build succeeded in 748 ms
info builder:builder Executing cleanup tasks...
Process finished with exit code 0
Issue Analytics
- State:
- Created 3 years ago
- Reactions:2
- Comments:11 (8 by maintainers)
Top Results From Across the Web
Unable to use esprima with ReactJS - Unexpected token
I am able to solve the problem by moving sum function outside the class. But does not know why it did not run...
Read more >Have a JavaScript Unexpected Token Error? Check Your Syntax
A deep look at the Unexpected Token Error in JavaScript, including a short examination of JavaScript's syntax best practices.
Read more >CHANGELOG.md - facebook/react - Sourcegraph
renderToString : Will no longer error when suspending on the server. Instead, it will emit the fallback HTML for the closest <Suspense> boundary...
Read more >Error: Unexpected token 'export' - Frontity Community Forum
Hello Frontity team, After upgrading frontity to 1.10.0 when i run npx frontity dev i get Error: Unexpected token 'export' I use npm...
Read more >Untitled
fix build errors - Fix Source0 - remove python2 - update to 0.29.21 - update ... SUG:NA - DESC:Drop dependency on gamin -...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Thanks for reporting. Yes, with the recent terser upgrade, Esprima (used in our preload generation) is currently the only piece that is still lacking ES6 support.
A switch to Espree seems reasonable. We’ll discuss this in the team. I would be surprised if @codeworrior hasn’t already looked into the differences between Esprima and Espree and the possible issues these could cause in our current implementation 😉
We have switched parsers to Espree v6. We can’t use any newer versions, because they require a higher version of Node.js than what UI5 Tooling currently supports.
This means some ES6 features are still not supported:
We will probably add support for those by upgrading Espree with the UI5 Tooling 3.0 release.
However, the “Unexpected token” error for spread operators reported in this issue is now resolved with UI5 CLI v2.11.2 🎉