Pup*_*kin 7 javascript bundle bundling-and-minification asp.net-core asp.net-core-3.1
我添加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
}
]
Run Code Online (Sandbox Code Playgroud)
两个脚本都已缩小并合并到main.min.js
. 但是在缩小之后,所有的async
修饰符都从结果脚本中删除了。
功能如
async function foo() {
await /* some promise */;
}
Run Code Online (Sandbox Code Playgroud)
已经变成:
function foo() {await /*some promise*/;}
Run Code Online (Sandbox Code Playgroud)
如何避免删除async
修饰符?
我重现了这个问题,并尝试缩小使用和稍后使用的简单js文件ES6 specifications
。
测试.js
async function foo() {
await bar();
}
async function bar() {
for (var i = 0; i < 10; i++) { // do some work
}
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用Bundler 和 Minifier工具缩小文件,然后抛出此错误:
这意味着Bundler 和 Minifier 不支持 ES6 及更高版本的规范。
为了确认我开始在Github中搜索这个问题,我发现了这些相同的行为
我可以肯定地说这是转译器问题
转译器或源到源编译器是读取用一种编程语言编写的源代码并生成另一种语言的等效代码的工具。
最常见且使用最广泛的是TypeScript
TypeScript
在某些情况下会转译ES6
,然后再转译ES5
例如:如果您将 Target 设置为ES6
且ES2015
它会转换为ES5
. 但是,如果您的目标ES2020
不会转换您的代码。
async
但会引发错误