【问题标题】:Minify js with async in ASP.NET Core 2.2在 ASP.NET Core 2.2 中使用异步缩小 js
【发布时间】:2020-05-25 17:39:38
【问题描述】:

我正在开发一个 ASP.NET Core 2.2 应用程序并使用 Bundler & Minifier 来缩小 js 代码。当我尝试使用 async\await 操作添加.js 文件时:

updatePermissionsConnection.onclose(
    async () => {
         await startUpdatePermissionsConnection();
    });

我收到很多错误:

错误 0 应为 ')':=>
错误 0 应为“;”
错误 0 预期表达式:)
错误 0 应为“)”:=>
错误 0 应为“;”
错误 0 预期表达式:)

如何解决?

【问题讨论】:

    标签: c# asp.net-core bundling-and-minification


    【解决方案1】:
    1. 这是一个已知问题。虽然这个commit 显示BuildBundlerMinifier 应该解决这个问题,但它还不支持async/await。请参阅 #311#379

    2. 实际上,BuildBundlerMinifier 使用 C# 解析 JavaScript(请参阅 NUglify/JavaScript)。然而,JavaScript 本身发展得非常快(参见tc39/proposals)。这就是为什么第 3 方 .NET 库无法及时支持新的 JavaScript 功能的原因。因此,现在人们倾向于将他们的工具链迁移到 Node.js 平台以支持最新的 JavaScript 功能。

    3. 通常,即使BuildBundlerMinifier 不支持最新的 JavaScript 功能,也不会有问题。因为有些浏览器也不支持最新的功能。例如,人们不会在浏览器中直接使用async/await,因为它会在 IE11 上抛出错误(参见MDN)。所以一个快速而肮脏的解决方法是使用旧的Promise API,而不是直接在浏览器中使用async/await

    4. 更强大的方法是使用 Node.js 平台。例如,Babel /Gulp / .... Microsoft 提供了一个 sample,它使用 Gulp 消耗 bundleconfig.json。迁移工具链会很容易。

    【讨论】:

    • 使用 .Net 5,捆绑器仍然不支持 async/await,但选项 3 对我有用。
    猜你喜欢
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多