【发布时间】:2015-11-18 15:58:20
【问题描述】:
我的网站项目有一些 JavaScript 库依赖项,我使用 gulpfile.js 中的 gulp-concat 插件将它们捆绑为一个库,而不是单独包含它们:
gulp.src(['src/js/angular.min.js',
'src/js/angular-route.min.js',
'src/js/angular-sanitize.min.js',
'src/js/domador.min.js',
'src/js/megamark.min.js',
'src/js/woofmark.min.js'])
.pipe(concat('libs.js'))
.pipe(gulp.dest('dist/'));
在我添加了domador、megamark 和woofmark 库后,出现了一个问题。
虽然这些库在 HTML 中单独引用时可以正常工作,但捆绑它们会在我的 libs.js 中引入一些非法字符,这会破坏 Chrome:
Uncaught SyntaxError: Unexpected token ILLEGAL
开发工具告诉我,在megamark.min.js 结束和woofmark.min.js 开始之间确实存在三个意外字符:
但是!当我在 Visual Studio 中查看 libs.js 时:
混合中似乎有某种“隐藏”字符对 Chrome 来说变得“未隐藏”并杀死脚本。我不明白为什么它们会在那里,或者为什么我尝试补救的方法都不起作用......
我尝试过的:
- 捆绑除
woofmark.min.js之外的所有内容,并将其单独包含在内。是的,这可行,但我想将它们全部捆绑在一起(我想了解发生了什么) - 将记事本中的文件重新保存为 UTF-8 编码。没有效果。
- 从
woofmark.min.js中第一个关键字的中途退格,比必要的次数要多得多,然后重新输入必要的字符。没有效果。 -
megamark.min.js的最后几个字符进行了类似的努力。没有效果。
任何见解将不胜感激!
【问题讨论】:
-
使用什么服务器将脚本传送到浏览器?什么默认字符集就可以了?我明白了,
shchcy: "щ"也不正确。 -
服务器应该以
content-type:application/javascript; UTF-8标头响应.js文件。 -
这个符号 - 只是 BOM 标记。如果使用 utf-8 应该可以正确解析。
-
总之,第一个屏幕上使用了单字节字符集。
标签: visual-studio gulp byte-order-mark gulp-concat