【问题标题】:Uncaught SyntaxError: Invalid or unexpected token 未捕获的 SyntaxError:无效或意外的标记 
【发布时间】:2017-03-30 23:38:58
【问题描述】:

我正在尝试将我的项目升级到 webpack 版本 2。

在完成所有 typescript 编译和 webpack 构建之后,我尝试运行我的网站。我最终得到了这个错误:

未捕获的 SyntaxError:无效或意外令牌

这是在我的 webpack bundle.js 文件中。我去文件看看它是什么,发现这些字符:

我»¿

光标位于 ï 和 » 之间。

这些字符位于我下载的几个 npm 包的开头。 (我用yarn下载了它们。)

搜索 bundle.js 我可以多次看到这些字符在我的包中:

  • 在 jquery-color 的开头
  • 在 jquery-inputmask 的开头
  • 在 jquery-mask 的开头(是的,我有两个掩码..)
  • 还有一个我不认识的(关于 getSignedRequest)。

这些奇怪的符号是如何到达那里的,我该如何摆脱它们?

【问题讨论】:

  • 这就是 UTF-8 BOM。
  • @DanielA.White - 嗯,一定是在较新的版本中添加了......好吧,至少我知道它是什么。去谷歌寻找解决办法。谢谢!

标签: javascript webpack webpack-2


【解决方案1】:

我添加了webpack-utf8-bom 插件,它为我处理好了。

这是插件的 npm 页面:https://www.npmjs.com/package/webpack-utf8-bom

这是该页面的用法:

// import plugin 
var BomPlugin = require('webpack-utf8-bom');

module.exports = {
  ...
  plugins: [
    // Add plugin in plugins list 
    // true for adding bom 
    // false for removing bom 
    new BomPlugin(true)
  ],

 ...
};

关键部分是它与我的预期相反。我原以为 false 会摆脱 BOM 字符,但实际上使用 true 摆脱了错误。

new BomPlugin(true)

当我查看时,这些字符已被一个红点取代。我的猜测是插件正确地格式化了它们,所以它们不会混淆浏览器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-18
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 2020-10-13
    相关资源
    最近更新 更多