c# - 在 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 预期的表达式:)
如何解决?
解决方案
这是一个已知的问题。尽管此提交显示 BuildBundlerMinifier 应该可以解决该问题,但它尚不支持
async/await
. 请参阅#311和#379。实际上,BuildBundlerMinifier使用 C# 解析 JavaScript(参见NUglify/JavaScript)。然而,JavaScript 本身发展得非常快(参见tc39/proposals)。这就是为什么第 3 方 .NET 库无法及时支持新的 JavaScript 功能的原因。因此,现在人们倾向于将他们的工具链迁移到 Node.js 平台以支持最新的 JavaScript 功能。
通常,即使
BuildBundlerMinifier
不支持最新的 JavaScript 功能,也不会有问题。因为有些浏览器也不支持最新的功能。例如,人们不会async/await
直接在浏览器中使用,因为它会在 IE11 上抛出(参见MDN)。所以一个快速而肮脏的解决方法是使用旧的Promise
API 而不是async/await
直接在浏览器中使用。一种更强大的方法是使用 Node.js 平台。例如,Babel /Gulp / .... Microsoft 提供了一个使用Gulp使用的示例
bundleconfig.json
。迁移工具链将很容易。