【问题标题】:Bundler & Minifier failing because of using strictBundler & Minifier 由于使用严格而失败
【发布时间】:2019-10-02 01:04:05
【问题描述】:

我正在使用 libman.json 将客户端库从 cdnjs 拉到我项目中的文件夹中。然后,我想将这些库捆绑并缩小到一个 js 文件中,该文件将在 Web 应用程序中部署和引用。为此,我使用了一个名为 Bundler & Minifier 的视觉工作室扩展。我已经在我的 bundle.config 中设置了所有内容,但是我遇到了我试图捆绑的库之一的问题。具体来说,如果我尝试在包中包含 Chart.js (2.8.0),我会在构建时收到以下错误:

(Bundler & Minifer) 严格模式不允许分配给未定义 变量:r

这不应该是警告而不是错误吗?我不明白这应该如何防止捆绑/缩小并导致构建失败。有没有办法覆盖这种行为?

【问题讨论】:

  • 我不认为这是一个真正的捆绑错误...... .js 文件正在使用严格模式。在严格模式下,.js 应该显式定义变量...(不能使用未定义的变量)...只需修复 .js 文件中的错误(使用var 定义变量)或删除"use strict";跨度>
  • 我同意,但问题是我不应该修改我通过包管理器获得的第三方库,因为我团队中的每个人都需要确保他们进行相同的修改。我同意 Chart.js 开发人员在他们的源代码中放置“use strict”然后不遵守所有规则是错误的,但我仍然认为这不应该阻止缩小和捆绑。应该肯定会打印一个警告,但它不应该阻止我构建我的解决方案。
  • Chart.js 有问题。如果您查看下面链接中第 359-364 行的源代码,您会看到 case 语句设置了一个变量 r 而没有声明 r。这就是导致捆绑器失败的原因。 cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.bundle.js
  • 可能会在他们的 github 上提出问题/错误...
  • 我会这样做,但同时我希望有一个解决方法,因为这实际上阻止了我构建我们的解决方案。

标签: javascript asp.net-mvc visual-studio visual-studio-2019


【解决方案1】:

这不应该是警告而不是错误吗?

不,因为这是使用严格模式的全部意义所在,我们希望得到错误(而不是警告)。来自mozilla developer refernce

严格模式将一些以前接受的错误变为错误。 JavaScript 旨在为新手开发人员提供方便,并且 有时它给出的操作应该是错误非错误 语义。有时这可以解决眼前的问题,但有时 这会在未来造成更严重的问题。严格模式对待这些 错误作为错误,以便被发现并及时修复。

如果您的第三方库有错误,您可以修复该问题或放弃该库...如果您不想在本地项目中修复它,您可以提出问题here

【讨论】:

    【解决方案2】:

    undefined variables assignment issue 于 2019 年 3 月 18 日在 Chart.js GitHub 中提出。

    要手动修复它,请在 Chart.js hwb2rgb(hwb) 函数(第 343 行,v2.8.0)中添加以下变量声明:

    var r, g, b;
    

    【讨论】:

      猜你喜欢
      • 2013-06-17
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多