簡體   English   中英

ASP.NET Core BundleMinifier 在縮小后刪除異步修飾符

[英]ASP.NET Core BundleMinifier removes async modifier after minification

我將bundleconfig.json添加到 ASP.NET Core 應用程序。 它具有以下結構:

[
  {
    "outputFileName": "wwwroot/js/main.min.js",
    "inputFiles": [
      "wwwroot/js/scripts/first.js",
      "wwwroot/js/scripts/second.js"
    ],
    "minify": {
      "enabled": true,
      "renameLocals": true
    },
    "sourceMap": false
  }
]

兩個腳本都已縮小並合並到main.min.js 但在縮小后,所有async修飾符都已從結果腳本中刪除。

功能如

async function foo() {
  await /* some promise */;
}

已經變成:

function foo() {await /*some promise*/;}

如何避免刪除async修飾符?

我重現了這個問題,並試圖縮小一個使用ES6 specifications及更高版本的簡單 js 文件。

測試.js

async function foo() {
    await bar();
}
async function bar() {
    for (var i = 0; i < 10; i++) { // do some work
    }
}

然后我嘗試使用Bundler 和 Minifier工具縮小文件,然后拋出此錯誤:

在此處輸入圖片說明

這意味着Bundler 和 Minifier 不支持 ES6 規范及更高版本。

為了確認,我開始在Github 中搜索這個問題,我發現了這些相同的行為

我可以肯定地說這是Transpilers問題

轉譯器或源到源編譯器是讀取以一種編程語言編寫的源代碼並生成以另一種語言編寫的等效代碼的工具。

最常見和使用最廣泛的一種是TypeScript

在某些情況下, TypeScript會將ES6及更高版本轉換為ES5

例如:如果您將 Target 設置為ES6ES2015它會轉換為ES5 但是,如果您的目標是ES2020則不會轉譯您的代碼。

在末尾

  • BundlerMinifier 使用 NUglify 來執行 javascript 代碼縮小,所以沒有辦法通過使用 Bundler 和 Minifier 來縮小 ES6 和更高版本的代碼。 除非,作者決定支持它。
  • 您遇到了 Transpile 問題(例如:ES6 到 ES5)。
  • Bundler & Minifier不會刪除諸如async類的未知關鍵字,但會引發錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM