uglify-js抛出错误和parsing错误发生

我非常抱歉,即时通讯问有关uglify-js错误。 但是,我尝试了这个网站的成员提出的每个方法,但仍然没有任何改善。 我试图吞噬谷歌聚合物应用程序dist文件夹。 不知何故,总是有错误引发,它使我无法通过apache cordova成功地准备和编译应用程序到android。 非常希望这里的成员真的需要检查这个编码,因为我花了两个星期,但没有得到任何东西。

我的gulpfile.js

'use strict'; // Include Gulp & Tools We'll Use var gulp = require('gulp'); var jshint = require('gulp-jshint'); var $ = require('gulp-load-plugins')(); var del = require('del'); var runSequence = require('run-sequence'); var browserSync = require('browser-sync'); var reload = browserSync.reload; var merge = require('merge-stream'); var path = require('path'); var fs = require('fs'); var glob = require('glob'); var build = require('gulp-build'); var AUTOPREFIXER_BROWSERS = [ 'ie >= 10', 'ie_mob >= 10', 'ff >= 30', 'chrome >= 34', 'safari >= 7', 'opera >= 23', 'ios >= 7', 'android >= 4.4', 'bb >= 10' ]; var styleTask = function (stylesPath, srcs) { return gulp.src(srcs.map(function(src) { return path.join('app', stylesPath, src); })) .pipe($.changed(stylesPath, {extension: '.css'})) .pipe($.autoprefixer(AUTOPREFIXER_BROWSERS)) .pipe(gulp.dest('.tmp/' + stylesPath)) .pipe($.if('*.css', $.cssmin())) .pipe(gulp.dest('dist/' + stylesPath)) .pipe($.size({title: stylesPath})); }; // Compile and Automatically Prefix Stylesheets gulp.task('styles', function () { return styleTask('styles', ['**/*.css']); }); gulp.task('elements', function () { return styleTask('elements', ['**/*.css']); }); // Lint JavaScript gulp.task('jshint', function () { return gulp.src([ 'app/scripts/**/*.js', 'app/elements/**/*.js', 'app/elements/**/*.html' ]) .pipe(reload({stream: true, once: true})) .pipe($.jshint.extract()) // Extract JS from .html files .pipe($.jshint()) .pipe($.jshint.reporter('jshint-stylish')) .pipe($.if(!browserSync.active, $.jshint.reporter('fail'))); }); // Optimize Images gulp.task('images', function () { return gulp.src('app/images/**/*') .pipe($.cache($.imagemin({ progressive: true, interlaced: true }))) .pipe(gulp.dest('dist/images')) .pipe($.size({title: 'images'})); }); // Copy All Files At The Root Level (app) gulp.task('copy', function () { var app = gulp.src([ 'app/*', '!app/test', '!app/precache.json' ], { dot: true }).pipe(gulp.dest('dist')); var bower = gulp.src([ 'bower_components/**/*' ]).pipe(gulp.dest('dist/bower_components')); var elements = gulp.src(['app/elements/**/*.html']) .pipe(gulp.dest('dist/elements')); var swBootstrap = gulp.src(['bower_components/platinum-sw/bootstrap/*.js']) .pipe(gulp.dest('dist/elements/bootstrap')); var swToolbox = gulp.src(['bower_components/sw-toolbox/*.js']) .pipe(gulp.dest('dist/sw-toolbox')); var vulcanized = gulp.src(['app/elements/elements.html']) .pipe($.rename('elements.vulcanized.html')) .pipe(gulp.dest('dist/elements')); return merge(app, bower, elements, vulcanized, swBootstrap, swToolbox) .pipe($.size({title: 'copy'})); }); // Copy Web Fonts To Dist gulp.task('fonts', function () { return gulp.src(['app/fonts/**']) .pipe(gulp.dest('dist/fonts')) .pipe($.size({title: 'fonts'})); }); // Scan Your HTML For Assets & Optimize Them gulp.task('html', function () { var assets = $.useref.assets({searchPath: ['.tmp', 'app', 'dist']}); return gulp.src(['app/**/*.html', '!app/{elements,test}/**/*.html']) // Replace path for vulcanized assets .pipe($.if('*.html', $.replace('elements/elements.html', 'elements/elements.vulcanized.html'))) .pipe(assets) // Concatenate And Minify JavaScript .pipe($.if('*.js', $.uglify({preserveComments: 'some'}))) // Concatenate And Minify Styles // In case you are still using useref build blocks .pipe($.if('*.css', $.cssmin())) .pipe(assets.restore()) .pipe($.useref()) // Minify Any HTML .pipe($.if('*.html', $.minifyHtml({ quotes: true, empty: true, spare: true }))) // Output Files .pipe(gulp.dest('dist')) .pipe($.size({title: 'html'})); }); // Vulcanize imports gulp.task('vulcanize', function () { var DEST_DIR = 'dist/elements'; return gulp.src('dist/elements/elements.vulcanized.html') .pipe($.vulcanize({ dest: DEST_DIR, strip: true, inlineCss: true, inlineScripts: true })) .pipe(gulp.dest(DEST_DIR)) .pipe($.size({title: 'vulcanize'})); }); // Generate a list of files that should be precached when serving from 'dist'. // The list will be consumed by the <platinum-sw-cache> element. gulp.task('precache', function (callback) { var dir = 'dist'; glob('{elements,scripts,styles}/**/*.*', {cwd: dir}, function(error, files) { if (error) { callback(error); } else { files.push('index.html', './', 'bower_components/webcomponentsjs/webcomponents-lite.min.js'); var filePath = path.join(dir, 'precache.json'); fs.writeFile(filePath, JSON.stringify(files), callback); } }); }); // Clean Output Directory gulp.task('clean', del.bind(null, ['.tmp', 'dist'])); // Watch Files For Changes & Reload gulp.task('serve', ['styles', 'elements', 'images'], function () { browserSync({ notify: false, snippetOptions: { rule: { match: '<span id="browser-sync-binding"></span>', fn: function (snippet) { return snippet; } } }, // Run as an https by uncommenting 'https: true' // Note: this uses an unsigned certificate which on first access // will present a certificate warning in the browser. // https: true, server: { baseDir: ['.tmp', 'app'], routes: { '/bower_components': 'bower_components' } } }); gulp.watch(['app/**/*.html'], reload); gulp.watch(['app/styles/**/*.css'], ['styles', reload]); gulp.watch(['app/elements/**/*.css'], ['elements', reload]); gulp.watch(['app/{scripts,elements}/**/*.js'], ['jshint']); gulp.watch(['app/images/**/*'], reload); }); // Build and serve the output from the dist build gulp.task('serve:dist', ['default'], function () { browserSync({ notify: false, snippetOptions: { rule: { match: '<span id="browser-sync-binding"></span>', fn: function (snippet) { return snippet; } } }, // Run as an https by uncommenting 'https: true' // Note: this uses an unsigned certificate which on first access // will present a certificate warning in the browser. // https: true, server: 'dist' }); }); // Build Production Files, the Default Task gulp.task('default', ['clean'], function (cb) { runSequence( ['copy', 'styles'], 'elements', ['jshint', 'images', 'fonts', 'html'], 'vulcanize', 'precache', cb); }); gulp.task('build', function() { gulp.src('scripts/*.js') .pipe(build({ GA_ID: '123456' })) .pipe(gulp.dest('dist')) }); gulp.task('lint', function() { return gulp.src('./lib/*.js') .pipe(jshint()) .pipe(jshint.reporter('default')); }); gulp.task('uglify', function() { gulp.src('public/js/*.js') .pipe(uglify()) .pipe(gulp.dest('dist/js')) }); gulp.task('scripts', ['clean'], function () { return gulp.src('js/*.js') .pipe(uglify().on('error', function(e){ console.log(e); })) .pipe(gulp.dest('minjs')); }); gulp.task('js', function(){ return gulp.src(paths.src.js) .pipe(babel()) .pipe(uglify()) .pipe(gulp.dest(paths.dist.js)); }); gulp.task("uglify-src", function() { gulp.src([ "src/js/**/*.js" ]) .pipe(concat("app.js")) .pipe(ignore.exclude([ "**/*.map" ])) .pipe(uglify()) .pipe(gulp.dest("dist/js")); }); // Load tasks for web-component-tester // Adds tasks for `gulp test:local` and `gulp test:remote` try { require('web-component-tester').gulp.init(gulp); } catch (err) {} // Load custom tasks from the `tasks` directory try { require('require-dir')('tasks'); } catch (err) {} 

我的g咽结果

 events.js:141 throw er; // Unhandled 'error' event ^ Error at new JS_Parse_Error (eval at <anonymous> (C:\Users\CharlesCks\polymer-1.0.2\node_modules\uglify-js\tools\node.js:22:1),`<anonymous>:1526:18) at js_error (eval at <anonymous> (C:\Users\Charles Cks\polymer-1.0.2\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:1534:11) at parse_error (eval at <anonymous> (C:\Users\Charles Cks\polymer-1.0.2\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:1647:9) at next_token (eval at <anonymous> (C:\Users\Charles Cks\polymer-1.0.2\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:1911:9) at skip_line_comment (eval at <anonymous> (C:\Users\Charles Cks\polymer-1.0.2\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:1753:16) at handle_slash (eval at <anonymous> (C:\Users\Charles Cks\polymer-1.0.2\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:1842:20) at Object.next_token [as input] (eval at <anonymous> (C:\Users\Charles Cks\polymer-1.0.2\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:1898:27) at next (eval at <anonymous> (C:\Users\Charles Cks\polymer-1.0.2\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:2011:25) at semicolon (eval at <anonymous> (C:\Users\Charles Cks\polymer-1.0.2\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:2058:30) at simple_statement (eval at <anonymous> (C:\Users\Charles Cks\polymer-1.0.2\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:2239:73) at eval (eval at <anonymous> (C:\Users\Charles Cks\polymer-1.0.2\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:2107:20) at eval (eval at <anonymous> (C:\Users\Charles Cks\polymer-1.0.2\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:2072:24) at eval (eval at <anonymous> (C:\Users\Charles Cks\polymer-1.0.2\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:2819:23) at Object.parse (eval at <anonymous> (C:\Users\Charles Cks\polymer-1.0.2\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:2829:7) at C:\Users\Charles Cks\polymer-1.0.2\node_modules\uglify-js\tools\node.js:61:33 at Array.forEach (native) 

events.js

  exports._ElementCache = function () { var cache = {}, guidCounter = 1, expando = "data" + (new Date).getTime(); this.getData = function (elem) { var guid = elem[expando]; if (!guid) { guid = elem[expando] = guidCounter++; cache[guid] = {}; } return cache[guid]; }; this.removeData = function (elem) { var guid = elem[expando]; if (!guid) return; delete cache[guid]; try { delete elem[expando]; } catch (e) { if (elem.removeAttribute) { elem.removeAttribute(expando); } } }; }; /** * Fix an event * @param event * @returns {*} */ exports._fixEvent = function (event) { function returnTrue() { return true; } function returnFalse() { return false; } if (!event || !event.stopPropagation) { var old = event || window.event; // Clone the old object so that we can modify the values event = {}; for (var prop in old) { event[prop] = old[prop]; } // The event occurred on this element if (!event.target) { event.target = event.srcElement || document; } // Handle which other element the event is related to event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement; // Stop the default browser action event.preventDefault = function () { event.returnValue = false; event.isDefaultPrevented = returnTrue; }; event.isDefaultPrevented = returnFalse; // Stop the event from bubbling event.stopPropagation = function () { event.cancelBubble = true; event.isPropagationStopped = returnTrue; }; event.isPropagationStopped = returnFalse; // Stop the event from bubbling and executing other handlers event.stopImmediatePropagation = function () { this.isImmediatePropagationStopped = returnTrue; this.stopPropagation(); }; event.isImmediatePropagationStopped = returnFalse; // Handle mouse position if (event.clientX != null) { var doc = document.documentElement, body = document.body; event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); } // Handle key presses event.which = event.charCode || event.keyCode; // Fix button for mouse clicks: // 0 == left; 1 == middle; 2 == right if (event.button != null) { event.button = (event.button & 1 ? 0 : (event.button & 4 ? 1 : (event.button & 2 ? 2 : 0))); } } return event; }; /** * @constructor */ exports._EventManager = function (cache) { var nextGuid = 1; this.addEvent = function (elem, type, fn) { var data = cache.getData(elem); if (!data.handlers) data.handlers = {}; if (!data.handlers[type]) data.handlers[type] = []; if (!fn.guid) fn.guid = nextGuid++; data.handlers[type].push(fn); if (!data.dispatcher) { data.disabled = false; data.dispatcher = function (event) { if (data.disabled) return; // *** events.js:141 *** event = exports._fixEvent(event); var handlers = data.handlers[event.type]; if (handlers) { for (var n = 0; n < handlers.length; n++) { handlers[n].call(elem, event); } } }; } if (data.handlers[type].length == 1) { if (document.addEventListener) { elem.addEventListener(type, data.dispatcher, false); } else if (document.attachEvent) { elem.attachEvent("on" + type, data.dispatcher); } } }; function tidyUp(elem, type) { function isEmpty(object) { for (var prop in object) { return false; } return true; } var data = cache.getData(elem); if (data.handlers[type].length === 0) { delete data.handlers[type]; if (document.removeEventListener) { elem.removeEventListener(type, data.dispatcher, false); } else if (document.detachEvent) { elem.detachEvent("on" + type, data.dispatcher); } } if (isEmpty(data.handlers)) { delete data.handlers; delete data.dispatcher; } if (isEmpty(data)) { cache.removeData(elem); } } this.removeEvent = function (elem, type, fn) { var data = cache.getData(elem); if (!data.handlers) return; var removeType = function (t) { data.handlers[t] = []; tidyUp(elem, t); }; if (!type) { for (var t in data.handlers) removeType(t); return; } var handlers = data.handlers[type]; if (!handlers) return; if (!fn) { removeType(type); return; } if (fn.guid) { for (var n = 0; n < handlers.length; n++) { if (handlers[n].guid === fn.guid) { handlers.splice(n--, 1); } } } tidyUp(elem, type); }; this.proxy = function (context, fn) { if (!fn.guid) { fn.guid = nextGuid++; } var ret = function () { return fn.apply(context, arguments); }; ret.guid = fn.guid; return ret; }; }; /** * Trigger a click on an element * @param elem */ exports.triggerClick = function (elem) { var evObj; if (document.createEvent) { window.setTimeout(function () { evObj = document.createEvent("MouseEvents"); evObj.initEvent("click", true, true); elem.dispatchEvent(evObj); }, 0); } else { window.setTimeout(function () { if (document.createEventObject) { evObj = document.createEventObject(); evObj.cancelBubble = true; elem.fireEvent("on" + "click", evObj); } }, 0); } }; var cache = new exports._ElementCache(); var eventManager = new exports._EventManager(cache); eventManager.triggerClick = exports.triggerClick; exports.manager = eventManager; 

这个答案迟来了,但我只是有一个类似的问题,吞下uglify抛出一个错误。 uglify中的gulpfile.js用来缩小js文件。 我会build议你检查所有的js文件,因为其中一个可能有错误。 虐待你的build议你开始与app.js