2016-04-03 65 views
0

巴貝爾正確transpiles一切exept等待下面的代碼片段和配置使用的WebPack:巴別爾transpiles異步但不等待?

async function myMethod(i) { 
    let j = i * i; 
    return j; 
} 

let x = myMethod(2); 

console.log(myMethod) 
console.log(x); 

let y = await myMethod(2); 

的結果是:

console.log(myMethod) // returns a function. 
console.log(x) // returns a promise 

現在奇怪的是,與最後一行我得到一個「意外的標記「錯誤形式巴貝爾。怎麼可能?

的package.json:

"devDependencies": { 
    "babel": "^6.5.2", 
    "babel-loader": "^6.2.4", 
    "babel-polyfill": "^6.7.4", 
    "babel-preset-es2015": "^6.6.0", 
    "babel-preset-react": "^6.5.0", 
    "babel-preset-stage-0": "^6.5.0", 
    "react": "^0.14.8" 
} 

Webpack.config:

var path = require('path'); 
var webpack = require('webpack'); 

module.exports = { 
    context: path.join(__dirname), 
    entry: ['babel-polyfill', './App/main.js'], 

    [..] 

    module: { 
     loaders: [ 
      { 
       test: /\.jsx?$/, 
       exclude: /node_modules/, 
       loader: 'babel', 
       query: { 
        presets: ['es2015', 'stage-0', 'react'], 
       }, 
      }, 
     ], 
    }, 

    [..] 

    resolve: { 
     extensions: ['', '.js', '.jsx'], 
    } 
} 

回答

3

據我所知,使用await它必須被包裹在一個async功能。

所以你可以改變:

let y = await myMethod(2); 

是:

async function main() { 
    let y = await myMethod(2); 
} 

main(); 

,它應該工作。