在gulp-useref之后使用gulp-rev我有一个奇怪的问题。我正在使用gulp-useref将我的所有angular,jquery等连接到一个名为lib.js的文件中。
这样可以正常工作,但是如果我使用gulp-rev将哈希附加到lib.js文件名,则visual studio和浏览器会抱怨文件中存在语法错误。
(FWIW,它抱怨的声明是来自jquery.js的'e.querySelectorAll(“*,:x”)')。但是如果我在gulp任务中注释掉.pipe($。rev())行,那一切都有效。
但是,当我使用MD5或任何散列算法比较lib.js和lib-3654837183.js时,它们完全相同。那么为什么浏览器和VS会抱怨一个名字的文件出现语法错误,并且对同一个文件完全没问题,但是名字不同?
gulp.task("build-prod", ["inject"], function() {
log("building production environment");
var cssFilter = $.filter("**/*.css", { restore: true });
var htmlFilter = $.filter("**/*.cshtml", { restore: true });
var jsLibFilter = $.filter("**/" + config.optimized.lib, { restore: true });
var jsAppFilter = $.filter("**/" + config.optimized.app, { restore: true });
return gulp
.src(config.layout.devFile)
.pipe($.plumber())
.pipe($.print())
.pipe($.useref({ searchPath: "./" }))
.pipe(cssFilter)
.pipe($.minifyCss({ processImport: false }))
.pipe($.rev())
.pipe(gulp.dest(config.root))
.pipe(cssFilter.restore)
.pipe($.print())
.pipe(jsLibFilter)
.pipe($.uglify())
.pipe($.rev()) //if I comment this out, it works
.pipe(gulp.dest(config.root))
.pipe(jsLibFilter.restore)
.pipe(jsAppFilter)
.pipe($.ngAnnotate())
.pipe($.uglify())
.pipe($.rev())
.pipe(gulp.dest(config.root))
.pipe(jsAppFilter.restore)
.pipe($.revReplace({ replaceInExtensions: [".cshtml"] }))
.pipe(htmlFilter)
.pipe($.rename(config.layout.productionFileName))
.pipe(gulp.dest(config.sharedViews));
});
我的构建块在.cshtml中:
<!-- build:js js/lib.js -->
<!-- bower:js -->
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.js"></script>
<script src="bower_components/angular-route/angular-route.js"></script>
<script src="bower_components/bootstrap/dist/js/bootstrap.js"></script>
<!-- endbower -->
<!-- endbuild -->
有什么想法吗?
马库斯
答案 0 :(得分:0)
看来我正在追逐一只红鲱鱼。名为plain lib.js的连接文件仍然抛出异常;我只是没有看到它,因为我没有“在项目中包含lib.js”在VS. 当我在Visual Studio中的异常设置中为“从Javascript抛出的异常”抛出时禁用了中断时,一切正常。
似乎异常是Internet Explorer的一个众所周知的例外: https://bugs.jquery.com/ticket/13881
对噪音感到抱歉。