我写了一些JS文件,并使用一些关键词为 async, await
,lambda表达式和ecmas的某些功能。这在Chrome中工作正常,但我需要在IE 11中进行工作。
我找到了一个示例,可以将文件从src文件夹转移到lib,usign babel,但没有进行一些更改,例如,不等待转换。
.babelrc
{
"presets": ["es2015"]
}
jsconfig.json
{
"compilerOptions":
{
"target": "es6",
"module": "commonjs"
},
"exclude": [ "lib" ]
}
package.json
{
"version": "0.1.0",
"name": "es6-test",
"author": "jesus.angulo@outlook.com",
"devDependencies":
{
"babel-cli": "*",
"babel-preset-es2015":"*"
}
}
task.json
{
"version": "0.1.0",
"command": "${workspaceRoot}/Transpiler/node_modules/.bin/babel",
"isShellCommand": true,
"tasks":
[
{
"taskName": "watch",
"suppressTaskName": true,
"isBuildCommand": true,
"isBackground": true,
"args": ["${workspaceRoot}/Transpiler/src","--out-dir","${workspaceRoot}/Transpiler/lib","-w" ]
}
]
}
src/example.js
const greetings = ['Welcome', 'Willkommen', 'Hey', 'Gruezi'];
export function next() {
let idx = Math.floor(Math.random() * greetings.length)
return greetings[idx];
}
export function nth(n = 0) {
return greetings[n];
}
function resolveAfter2Seconds(x) {
return new Promise(resolve => {
setTimeout(() => {
resolve(x);
}, 2000);
});
}
async function f1() {
var x = await resolveAfter2Seconds(10);
console.log(x); // 10
}
f1();
lib/example.js
function next() {
var idx = Math.floor(Math.random() * greetings.length);
return greetings[idx];
}
function nth() {
var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
return greetings[n];
}
function resolveAfter2Seconds(x) {
return new Promise(function (resolve) {
setTimeout(function () {
resolve(x);
}, 2000);
});
}
async function f1() {
var x = await resolveAfter2Seconds(10);
console.log(x); // 10
}
f1();
我需要进行所有更改?
更新
我终于能够修复转板器。更改:
.babelrc
{
"presets": [
["env",{
"targets": { "browsers": ["last 1 versions"] },
"debug": true
}]
]
}
package.json
{
"version": "0.1.0",
"name": "es6-test",
"author": "jesus.angulo@outlook.com",
"scripts": {
"build": "babel src -d lib"
},
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-polyfill": "^6.26.0",
"babel-preset-env": "^1.6.1",
"babel-preset-es2015": "^6.24.1",
"babel-preset-es2017": "^6.24.1",
"babel-preset-stage-0": "^6.24.1"
}
}
并使用命令npm run build
async / await
是ES2017规格的一部分,因此您需要包括适当的预设才能使其正常工作。这是Babel首页的链接,可以阅读有关它的更多信息:
https://babeljs.io/docs/plugins/preset-es2017/