当我在浏览器中使用gulp-uglify时出现错误
events.js:72
throw er; // Unhandled 'error' event
^
Error
at new JS_Parse_Error (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:189:18)
at js_error (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:197:11)
at croak (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:656:9)
at token_error (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:664:9)
at expect_token (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:677:9)
at expect (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:680:36)
at /home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1222:13
at /home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:703:24
at expr_atom (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1152:35)
at maybe_unary (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1327:19)
at expr_ops (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1362:24)
at maybe_conditional (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1367:20)
at maybe_assign (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1391:20)
at expression (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1410:20)
这是我的脚本任务
gulp.task('scripts', function() {
var bundler = browserify({
entries: ['./src/scripts/main.js'],
debug: debug
}).transform(stringify()); // the error persist even without this transformation
bundler
.bundle()
.on('error', handleErrors)
.pipe(source(getBundleName() + '.js'))
.pipe(jshint())
.pipe(jshint.reporter('default', { verbose: true }))
.pipe(jshint.reporter('fail'))
.pipe(buffer())
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(uglify())
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest('./web/js'));
});
答案 0 :(得分:68)
uglify
将在缩小脚本内容之前对其进行解析。我怀疑其中一个browserify
源地图被包含在流中,直到uglify
。无论如何要找到问题,您都可以使用gulp-util
的log
方法来处理uglify
的例外情况。例如:
...
var gulpUtil = require('gulp-util');
gulp.task('scripts', function() {
...
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(uglify().on('error', gulpUtil.log)) // notice the error event here
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest('./web/js'));
});
如果您仍然无法解决问题,请在合并错误日志后发布详细信息。
答案 1 :(得分:5)
我在gulp-concat-sourcemap
和gulp-uglify
时遇到了同样的问题。我通过忽略gulp-ignore的地图文件来解决它:
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"));
});
答案 2 :(得分:0)
源JavaScript文件中可能是一个简单的错误。尝试通过在gulpfile中注释来禁用uglify,看看你的浏览器控制台是否发现了真正的问题。
gulp.task('minified', function () {
return gulp.src(paths.concatScripts)
.pipe(sourcemaps.init())
//.pipe(uglify())
.pipe(sourcemaps.write('.', { addComment: false }))
.pipe(gulp.dest(publishUrl));
});
答案 3 :(得分:0)
Node.js管道不传播错误。除了描述使用uglify().on
而不是pump
之外,本文还提到了@Marcos Abreu的pipe
方法。
https://github.com/terinjokes/gulp-uglify/blob/master/docs/why-use-pump/README.md#why-use-pump