2017-01-21 10 views
0

Использование babel-node я смог запустить следующий кодАсинхронный генератор работает на Бабель-узле, но не ж/столпотворение регистра или построить

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 REPL

Как и когда я запускаю его через babel-node как:

babel-node src/script.js 

Однако она терпит неудачу, когда я построить и запустить его следующим образом:

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

и дает мне

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

Использование babel-register также не ж/ту же ошибку:

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

Мой текущий .babelrc выглядит как

{ 
    "plugins": ["transform-strict-mode", "transform-async-generator-functions"], 
    "presets": ["es2015-node6", "stage-2"] 
} 

использование es2015 вместо es2015-node6 не дали никакой пользы

Когда я смотрел на плагин по умолчанию и пресеты, используемые для babel-nodehere, и похоже, они пусты

Что мне не хватает?

ответ

2

babel-node (и онлайн REPL), в дополнение к обработке переполнения, также requires babel-polyfill. Вы должны npm i -S babel-polyfill, а затем import 'babel-polyfill'; в точке входа вашей программы (или в вашем примере добавьте -r babel-polyfill к вашим node args).

+0

Какой босс! Хороший глаз только проблема 'импорт«столпотворение-polyfill»,' еще дали ту же ошибку, но когда я засунул его в аргументах он работал так: нода -r столпотворение регистра -r dotenv/конфигурации -r babel-polyfill src/script.js' – vvMINOvv

+0

Чтобы использовать в prod, постройте, как обычно, и запустить 'node -r babel-polyfill dist/script.js' – vvMINOvv