2016-09-30 90 views
8

Korzystamy z asynchronizacji/oczekiwania na nasz projekt Meteor. Ta składnia jest wszędzie w naszym pliku resolvers.js. Wszystko działa dobrze, dopóki nie zaktualizujemy do Węzła 6.7. Teraz pokazuje ten błąd za każdym razem staramy się budować:Babel: "Słowo kluczowe" oczekuj "jest zarezerwowane (53:24)"

„słowa kluczowego«czekają»jest zarezerwowane (53:24)”

enter image description here

Czy ktoś wie jak rozwiązać ten problem?

Oto treść mojego .babelrc pliku:

{ 
    "presets": ["es2015", "stage-2", "react"], 
    "plugins": ["react-require", "babel-root-slash-import"] 
} 
+0

Należy zauważyć, że operator wykładniczy przechodzi z etapu '-3' (dyskretnie zawarta w' scen 2') do ustawień [ 'es2016'] (http : //babeljs.io/docs/plugins/preset-es2016/), a asynchroniczne/oczekujące i końcowe przecinki funkcji przechodzą do ['es2017'] (http://babeljs.io/docs/plugins/preset-es2016/), więc powinieneś raczej użyć ich. – Frxstrem

+0

Próbowałem zmienić "es2015" na "es2017", ale wciąż ten sam błąd. –

+0

Nie należy zmieniać 'es2015' na' es2017', należy dodać 'es2016' i' es2017' zamiast 'stage-2'. ('[" es2015 "," es2016 "," es2017 "," reagować "]'). W każdym razie nie jest to zamierzone rozwiązanie, tylko "heads up", które wkrótce się zmieni. – Frxstrem

Odpowiedz

1

Okay, I okazało się rozwiązanie własnego problemu. Właśnie wykluczyłem .babelrc podczas tworzenia Meteora, ponieważ Meteor ma już pakiet, który obsługuje składnię ES6. Nie usunąłem całkowicie .babelrc, ponieważ będę go potrzebował podczas testów i podczas prowadzenia Storybook, który nie wyzwala budowy Meteora.

18

Na wszelki wypadek, gdy ktoś szuka tego samego problemu, w moim przypadku był to błąd użytkownika, mnie. Zapomniałem wstawić słowo asynchroniczne przed nazwą funkcji. enter image description here

1

Samo oczekiwanie jest nieprawidłową składnią. poczekać musi być wywoływana wewnątrz funkcji asynchronicznym jak:

var aFunction = async function() { 
    let aResponse = await get('aValue'); 
}