首页 > 解决方案 > 在 ASP.NET Core 2.2 中使用异步缩小 js

问题描述

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

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

我收到很多错误:

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

如何解决?

标签: c#asp.net-corebundling-and-minification

解决方案


  1. 这是一个已知的问题。尽管此提交显示 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)。所以一个快速而肮脏的解决方法是使用旧的PromiseAPI 而不是async/await直接在浏览器中使用。

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


推荐阅读