我添加了 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 缩小文件工具然后抛出此错误:
这意味着 Bundler 和 Minifier 不支持 ES6 规范及更高版本。
为了确认,我开始在 Github 中搜索此问题。我发现了这些相同的行为
我可以肯定地说这是 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
例如:如果您将目标设置为
ES6
和 ES2015
它转译为 ES5
.但是,如果您的目标是 ES2020
不会转译您的代码。在最后
缩小所以没有办法缩小 ES6 和更高版本的代码
使用 Bundler 和 Minifier。除非,作者决定支持它。
async
但抛出错误关于javascript - ASP.NET Core BundleMinifier 在缩小后删除异步修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60035342/