Bug report?
ES6+ input
ES6+ input
Uglify version (uglifyjs -V)
2.8.25
The uglifyjs CLI command executed or minify() options used.
minify()
JavaScript output or error produced.
Unexpected token: keyword (default)
React Native build produces an error with latest build 2.8.25:
Unexpected token: keyword (default)
:app:bundleReleaseJsAndAssets FAILED
uglify-js 2.8.25 does not work with ES6 - try uglify-es instead?
@alexlamsl ok. I was wrong - input es5. Code transpiled with babel.
__d(/* @expo/ex-navigation/src/ExNavigation.js */function(global, require, module, exports) {Object.defineProperty(exports,"__esModule",{value:true});exports.AndroidBackButtonBehavior=exports.getBackButtonManager=exports.createFocusAwareComponent=exports.withNavigation=exports.createRouter=exports.NavigationStyles=exports.NavigationReducer=exports.NavigationActionTypes=exports.NavigationActions=exports.createNavigationEnabledStore=exports.SharedElement=exports.SharedElementGroup=exports.SharedElementOverlay=exports.NavigationBar=exports.DrawerNavigationItem=exports.DrawerNavigation=exports.SlidingTabNavigationItem=exports.SlidingTabNavigation=exports.TabBadge=exports.TabBar=exports.TabNavigationItem=exports.TabNavigation=exports.StackNavigationItem=exports.StackNavigation=exports.NavigationContext=exports.NavigationProvider=undefined;var _ExNavigationProvider=require(441 );Object.defineProperty(exports,"NavigationProvider",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationProvider). // 441 = ./ExNavigationProvider\n\n\n\ndefault;}});var _ExNavigationContext=require(447 );Object.defineProperty(exports,"NavigationContext",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationContext). // 447 = ./ExNavigationContext\ndefault;}});var _ExNavigationStack=require(495 );Object.defineProperty(exports,"StackNavigation",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationStack). // 495 = ./ExNavigationStack\n\ndefault;}});var _ExNavigationStackItem=require(515 );Object.defineProperty(exports,"StackNavigationItem",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationStackItem). // 515 = ./ExNavigationStackItem\ndefault;}});var _ExNavigationTab=require(524 );Object.defineProperty(exports,"TabNavigation",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationTab). // 524 = ./tab/ExNavigationTab\n\ndefault;}});var _ExNavigationTabItem=require(529 );Object.defineProperty(exports,"TabNavigationItem",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationTabItem). // 529 = ./tab/ExNavigationTabItem\ndefault;}});var _ExNavigationTabBar=require(527 );Object.defineProperty(exports,"TabBar",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationTabBar). // 527 = ./tab/ExNavigationTabBar\ndefault;}});var _ExNavigationBadge=require(528 );Object.defineProperty(exports,"TabBadge",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationBadge). // 528 = ./ExNavigationBadge\ndefault;}});var _ExNavigationSlidingTab=require(530 );Object.defineProperty(exports,"SlidingTabNavigation",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationSlidingTab). // 530 = ./sliding-tab/ExNavigationSlidingTab\n\n\ndefault;}});var _ExNavigationSlidingTabItem=require(531 );Object.defineProperty(exports,"SlidingTabNavigationItem",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationSlidingTabItem). // 531 = ./sliding-tab/ExNavigationSlidingTabItem\n\n\ndefault;}});var _ExNavigationDrawer=require(540 );Object.defineProperty(exports,"DrawerNavigation",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationDrawer). // 540 = ./drawer/ExNavigationDrawer\n\n\ndefault;}});var _ExNavigationDrawerItem=require(544 );Object.defineProperty(exports,"DrawerNavigationItem",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationDrawerItem). // 544 = ./drawer/ExNavigationDrawerItem\n\ndefault;}});var _ExNavigationBar=require(481 );Object.defineProperty(exports,"NavigationBar",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationBar). // 481 = ./ExNavigationBar\n\n\ndefault;}});var _ExNavigationSharedElementOverlay=require(522 );Object.defineProperty(exports,"SharedElementOverlay",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationSharedElementOverlay). // 522 = ./shared-element/ExNavigationSharedElementOverlay\n\n\ndefault;}});var _ExNavigationSharedElementGroup=require(521 );Object.defineProperty(exports,"SharedElementGroup",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationSharedElementGroup). // 521 = ./shared-element/ExNavigationSharedElementGroup\n\n\ndefault;}});var _ExNavigationSharedElement=require(545 );Object.defineProperty(exports,"SharedElement",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationSharedElement). // 545 = ./shared-element/ExNavigationSharedElement\n\n\ndefault;}});var _ExNavigationStore=require(448 );Object.defineProperty(exports,"createNavigationEnabledStore",{enumerable:true,get:function get(){return _ExNavigationStore. // 448 = ./ExNavigationStore\n\n\ncreateNavigationEnabledStore;}});var _ExNavigationActions=require(443 );Object.defineProperty(exports,"NavigationActions",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationActions). // 443 = ./ExNavigationActions\n\ndefault;}});var _ExNavigationActionTypes=require(444 );Object.defineProperty(exports,"NavigationActionTypes",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationActionTypes). // 444 = ./ExNavigationActionTypes\ndefault;}});var _ExNavigationReducer=require(449 );Object.defineProperty(exports,"NavigationReducer",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationReducer). // 449 = ./ExNavigationReducer\ndefault;}});var _ExNavigationRouter=require(473 );Object.defineProperty(exports,"createRouter",{enumerable:true,get:function get(){return _ExNavigationRouter. // 473 = ./ExNavigationRouter\n\n\n\ncreateRouter;}});var _ExNavigationComponents=require(484 );Object.defineProperty(exports,"withNavigation",{enumerable:true,get:function get(){return _ExNavigationComponents. // 484 = ./ExNavigationComponents\n\nwithNavigation;}});Object.defineProperty(exports,"createFocusAwareComponent",{enumerable:true,get:function get(){return _ExNavigationComponents.\ncreateFocusAwareComponent;}});var _ExNavigationBackButtonManager=require(446 );Object.defineProperty(exports,"getBackButtonManager",{enumerable:true,get:function get(){return _ExNavigationBackButtonManager. // 446 = ./ExNavigationBackButtonManager\n\n\ngetBackButtonManager;}});var _ExNavigationAndroidBackButtonBehavior=require(546 );Object.defineProperty(exports,"AndroidBackButtonBehavior",{enumerable:true,get:function get(){return babelHelpers.interopRequireDefault(_ExNavigationAndroidBackButtonBehavior). // 546 = ./ExNavigationAndroidBackButtonBehavior\n\n\ndefault;}});var _ExNavigationStyles=require(516 );var _NavigationStyles=babelHelpers.interopRequireWildcard(_ExNavigationStyles);exports.NavigationStyles=_NavigationStyles; // 516 = ./ExNavigationStyles\n}, 440);
@isnifer no worries. Looking at your input though, these things look odd:
.interopRequireDefault(_ExNavigationBar). // 481 = ./ExNavigationBar\n\n\ndefault;}})
I don't see how that can be valid JavaScript? I believe one of these are causing Unexpected token: keyword (default) as you reported above.
These are technically valid, but may point to potential problem with the transpiled result:
var _ExNavigationStore=require(448 );
@alexlamsl just checked this code in 2.8.24 - everything is OK. Something wrong in 2.8.25 :(
I _think_ those \n in your example above are supposed to be actual line breaks, because then I can see uglify-js fail while acorn seems to be doing okay:
$ uglifyjs test.js
Parse error at ..\test.js:5,0
default;}});var _ExNavigationContext=require(447 );Object.def
^
ERROR: Unexpected token: keyword (default)
$ uglifyjs test.js -p acorn
__d(function(global,require,module,exports){Object.defineProperty(exports,"__esModule",{v...
@isnifer I believe you :wink:
But I do need a test case I can reproduce the issue in order to track down and fix stuff.
@alexlamsl my friend create a repo with problem https://github.com/itsmepetrov/uglify-issue
$ cat test.js
foo. // comment
default;
$ uglifyjs -V
uglify-js 2.7.5
$ uglifyjs test.js
foo.default;
md5-b9b24bc1e9834a3e3f2fbe28ea401e44
$ bin/uglifyjs -V
3.0.5
$ bin/uglifyjs test.js
Parse error at test.js:2,0
default;
^
ERROR: Unexpected token: keyword (default)
@kzc thanks - my effort to reduce this failed because I wasn't using a keyword:
var a = {b: 1}
console.log(a. // comment
.b);
Will proceed to fix this now.
Regression occurred in 4027a0c962b266f72b303e9367a6bad430097f59
Specifically, the as_name() changes:
https://github.com/mishoo/UglifyJS2/commit/4027a0c962b266f72b303e9367a6bad430097f59#diff-9f97a9c36fbbfb0d19068d6fae3bb84eR1374
So I think we need to restore that switch (tmp.type), but add an extra check for case "operator": like we do a few lines up with as_property_name()
@alexlamsl I believe in you! https://www.youtube.com/watch?v=btPJPFnesV4
uglify-js 2.8.26 has been released.
Most helpful comment
@alexlamsl I believe in you! https://www.youtube.com/watch?v=btPJPFnesV4