gpt4 book ai didi

javascript - ASP.NET Core BundleMinifier 在缩小后删除异步修饰符

转载 作者:行者123 更新时间:2023-12-01 15:17:11 25 4
gpt4 key购买 nike

我添加了 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 and Minifier 缩小文件工具然后抛出此错误:

enter image description here

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

为了确认,我开始在 Github 中搜索此问题。我发现了这些相同的行为
  • Crash on ES6 arrow functions in source files
  • minify es6 js file without turning them to es5
  • Where BundleMinifier currently is usefull (and where not)

  • 我可以肯定地说这是 Transpilers问题

    Transpilers, or source-to-source compilers, are tools that read source code written in one programming language, and produce the equivalent code in another language.



    最常见和使用最广泛的一种是 TypeScript
    TypeScript在某些情况下转译 ES6后来到 ES5
    例如:如果您将目标设置为 ES6ES2015它转译为 ES5 .但是,如果您的目标是 ES2020不会转译您的代码。

    在最后
  • BundlerMinifier 使用 NUglify 执行 javascript 代码
    缩小所以没有办法缩小 ES6 和更高版本的代码
    使用 Bundler 和 Minifier。除非,作者决定支持它。
  • 您遇到了 Transpile 问题(例如:ES6 到 ES5)。
  • 打包器和压缩器 不会删除未知关键字,如 async但抛出错误
  • 关于javascript - ASP.NET Core BundleMinifier 在缩小后删除异步修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60035342/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com