1

我的网站项目有一些 JavaScript 库依赖项,我使用我的gulp-concat插件gulpfile.js将它们捆绑为一个库,而不是单独包含它们:

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一旦我添加了,megamarkwoofmark库,就引入了一个问题。

尽管这些库在 HTML 中单独引用时可以正常工作,但捆绑它们会在我的中引入一些非法字符libs.js,这会破坏 Chrome:

Uncaught SyntaxError: Unexpected token ILLEGAL

megamark.min.js开发工具向我展示了在结束和woofmark.min.js开始之间确实存在三个意想不到的字符:

在此处输入图像描述

但!当我libs.js在 Visual Studio 中查看时:

在此处输入图像描述

混合中似乎有某种“隐藏”字符对 Chrome 来说变得“不隐藏”并杀死脚本。我不明白他们为什么在那里,或者为什么我试图补救的事情都没有奏效......

我试过的:

  • 捆绑除此之外的所有内容woofmark.min.js并将其单独包含在内。是的,这行得通,但是我想将它们全部捆绑在一起(并且我想了解正在发生的事情)
  • 将记事本中的文件重新保存为 UTF-8 编码。没有效果。
  • 从 中的第一个关键字中途退格,woofmark.min.js比必要的次数多得多,然后重新输入必要的字符。没有效果。
  • 的最后几个字符也有类似的努力megamark.min.js。没有效果。

任何见解将不胜感激!

4

1 回答 1

0

感谢vp_arth在评论中提供的信息,我找到了解决方案。

woofmark.min.js文件似乎被编码为“带有签名的UTF-8”,这是另一种说法,它具有产生非法字符的不可见BOM标记。

当由 IIS 单独发送时,它正在被转换,但在捆绑中连接时,标记被保留在文件中间,从而创建了非法令牌。

为了解决这个问题,我在 Visual Studio 中使用不同的编码重新保存了文件:

  • 文件->
  • 将 src/js/woofmark.min.js 保存为... ->
  • 使用编码保存... -> (按钮下拉)
  • 从选项中选择“ Unicode (UTF-8 without signature) - Codepage 65001 ”。

然后,在重新运行 gulp 任务后,完整捆绑的lib.js工作完美。

于 2015-11-18T16:32:32.647 回答