ждать (... of ...) не работает. Бабель настоящий env, узел v10 - PullRequest
0 голосов
/ 18 октября 2019

Прошло довольно много времени с тех пор, как я запустил проект nodejs с нуля, поэтому было немного потрошителя, чтобы установить и настроить eslint, babel и т. Д.

сейчас мой babelrc:

{
  "presets": [
    [
      "env",
      {
        "targets": {
          "node": "10"
        }
      }
    ]
  ],
  "plugins": [
    [
      "transform-runtime",
      {
        "regenerator": true
      }
    ]
  ]
}

package.json имеет зависимости dev:

"babel-cli": "^6.26.0",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-env": "^1.7.0",

Теперь я хочу перебрать список объектов. Для каждого из них мне нужно выполнить несколько асинхронных задач, которые мне понадобятся для await, поэтому я сделал:

for await (const thing of things) {
  const foo = await doSomethingThatTakesAwhile(thing)
  // etc
}

, но когда я запустил его в dev (nodemon через babel-node), теперь естьСинтаксическая ошибка в await:

for await (const thing of things) {
    ^
Syntax Error Unexpected token, expected (
    at Parser.pp$5.raise (... \node_modules\babylon\lib\index.js:4454:13)
    at Parser.pp.unexpected (... \node_modules\babylon\lib\index.js:1761:8)
    at Parser.pp.expect (... \node_modules\babylon\lib\index.js:1749:33)
    at Parser.pp$1.parseForStatement (... \node_modules\babylon\lib\index.js:2008:8)
etc..

Нужно ли мне изменить мою конфигурацию babel и / или я полностью неправильно понял для / await и await / async ?

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Я нашел другой проект, в котором я знаю, что for await of работает ... похоже, я использую старые плагины babel, а не новые, выделенные @babel/xxx библиотеки. После проб и ошибок при установке и удалении материала: вот работающий babelrc:

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": "10"
        }
      }
    ]
  ],
  "plugins": [
    [
      "@babel/plugin-transform-runtime",
      {
        "regenerator": true
      },
      "@babel/preset-env"
    ]
  ]
}

К этому моменту я установил все:

  • @ babel / core
  • @ babel / node
  • @ babel / cli
  • @ babel / preset-env
  • @ babel / plugin-transform-runtime

Тогда я столкнулся с этой проблемой: https://github.com/meteor/meteor/issues/10128 Так что пришлось также установить @ babel / runtime pegged на 7.0.0-beta.55 ... и теперь он собирает !!

0 голосов
/ 18 октября 2019

Я полагаю, что вам нужен плагин babel-plugin-offer-async-generator-functions для использования в ожидании синтаксиса.

...