2017-01-21 6 views
0

は、私は次のコード非同期ジェネレータはバベル・ノード上で動作しますが、バベルは、登録または

function timeout(ms = 100) { 
 
    return new Promise(resolve => { 
 
    let id = setTimeout(() => { 
 
         clearTimeout(id) 
 
    resolve(ms) 
 
    }, ms) 
 
}) 
 
} 
 

 
async function* worker(limit = 10) { 
 
    async function fetch() { 
 
    return await timeout(Math.random() * 1000) 
 
    } 
 

 
    let low = 0; 
 
    while (low++ < limit) yield await fetch() 
 
} 
 

 
async function run() { 
 
    const gen = worker(5) 
 
    const results = []; 
 
    for await (const res of gen) { 
 
    console.log('working') 
 
    results.push(res) 
 
    } 
 

 
    return 'done' 
 
} 
 

 
run().then(res => console.log(res)).catch(err => console.error(err))

ここでは動作しませんが、作品を実行することができたbabel-nodeを使用して構築/ wの失敗しますオンラインBabel REPL

だけでなく、私は同じようbabel-nodeを通してそれを実行します。

babel-node src/script.js 

しかしそれは私が構築し、そのようにそれを実行すると失敗します。

babel src/script.js --out-file dist/script.js 
node dist/script.js 

をしても同じエラー/ wの失敗babel-registerを使用して私に

TypeError: iterable[Symbol.iterator] is not a function 

を与える:

node -r babel-register -r dotenv/config src/script.js 

私の現在の.babelrcは、

のように見えます。代わりの es2015-node6を使用して
{ 
    "plugins": ["transform-strict-mode", "transform-async-generator-functions"], 
    "presets": ["es2015-node6", "stage-2"] 
} 

は私がbabel-nodehereのために使用されるデフォルトのプラグインおよびプリセットを見ると何のメリット

は得られなかった、と彼らは空

私は何をしないのですいるように見えますか?

答えて

2

babel-node(およびオンラインREPL)のほか、実行時の蒸散処理に加えて、requires babel-polyfillもあります。プログラムのエントリポイントでnpm i -S babel-polyfillを入力してからimport 'babel-polyfill';にする必要があります(または、例では、node引数に-r babel-polyfillを追加してください)。

+0

どのような上司!グッド目 唯一の問題は、 'インポート「バベル-ポリフィル」です;'まだ同じエラーを与えたが、私は引数でそれを立ち往生したときにそれはそう を働いた: 'バベル登録-rノード-r dotenv /設定-r babel-polyfill src/script.js' – vvMINOvv

+0

prodで使うには、普通は のようにビルドし、 'node -r babel-polyfill dist/script.js'を実行します。 – vvMINOvv

関連する問題