Как заставить Babel компилировать или игнорировать асинхронные * функции в классах? - PullRequest
0 голосов
/ 01 января 2019

Я использую асинхронные генераторы в качестве методов класса, например,

class Edge {
  async* get(key,test,path=[]) { /* ... do some stuff */; return }
}

Несмотря на то, что код нормально работает в Chrome и Edge, Babel выдает ошибку при попытке переноса для Node.js с использованиемpreset "env".

SyntaxError: C:/Users/Simon/git/reasondb/src/Edge.js: Unexpected token 
(125:6)
123 |                 return this;
124 |         }
> 125 |         async* get(key,test,path=[]) {
  |              ^

Узел v11. . сам по себе может обрабатывать синтаксис напрямую, поэтому мне не нужно переносить подобные вещи.Единственная причина, по которой я использую Babel, состоит в том, чтобы переносить операторы импорта модулей, поскольку Node еще плохо их обрабатывает, например, import {Edge} from "Edge.js" отлично работает в текущих версиях Edge и Chrome, но Node выдаст синтаксическую ошибку даже для {когда передан флаг --experimental-modules.

Babel будет правильно обрабатывать вещи, если я переместу функцию на класс и на прототип, например,

Edge.prototype.get = function*(key,text,path=[])  {  ... }
...