web-dev-qa-db-ja.com

babel 6 async / await:予期しないトークン

変換の非同期/待機の取得に問題があります。私は何が欠けていますか?

私の.babelrc:

{
  "presets": [ "es2015", "stage-0" ]
}

私のpackage.json(抜粋):

{  
  "babel-core": "^6.1.2",
  "babel-plugin-transform-runtime": "^6.1.2",
  "babel-preset-es2015": "^6.1.2",
  "babel-preset-stage-0": "^6.1.2"
}

出力:

babel src/server
SyntaxError: src/server/index.js: Unexpected token (7:21)
   5 |
   6 | try {
>  7 |   let server = await server('localhost', env.NODE_PORT || 3000)
     |                      ^
   8 |   console.log(`Server started on ${server.info.uri}`)
   9 | } catch (err) {
  10 |   console.error('Error starting server: ', err)
15
legomind

この投稿によると、babel-polyfill

Babel 6 regeneratorRuntimeはasync/awaitで定義されていません

うまくいけばそれがあなたを助けるでしょう:)

編集:

バベルポリフィルである必要はありませんが、私が使用した唯一のものです。

Gothdoが言ったように:awaitキーワードは関数スコープ内になければなりません。さらに、この関数定義にはasyncキーワードが必要です。

これは、トップレベルのスコープでawaitキーワードを使用できないことを意味します。

12
Yormi

Async/awaitはbabel-preset-stage-3

http://babeljs.io/docs/plugins/preset-stage-3/

2
Allain Lalonde

Async to generator transform を使用します。

Installation

$ npm install babel-plugin-transform-async-to-generator

使用法

.babelrcファイルに次の行を追加します。

{
  "plugins": ["transform-async-to-generator"]
}
0

Babel 7にアップグレードし、段階ではなくbabel-envを使用することをお勧めします(こちらを参照してください: https://github.com/babel/babel-upgrade )。

それに応じてアップグレードするために使用できるコマンドがあります。

npx babel-upgrade
0
Tamizaan

transform-async-to-module-methodプラグインを使用して自分でコンパイルできます。これにより、ES6ジェネレーター(node4で利用可能)を必要とするbluebirdコルーチンにコンパイルできます。

または、ブラウザと互換性があるようにES5にコンパイルし直す必要がある場合は、transform-async-to-generatorとfacebookのregeneratorを使用できます。

ここでbabelの設定を行う方法について書きました http://madole.xyz/async-await-es7/

0
Madole