変換の非同期/待機の取得に問題があります。私は何が欠けていますか?
私の.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)
この投稿によると、babel-polyfill
Babel 6 regeneratorRuntimeはasync/awaitで定義されていません
うまくいけばそれがあなたを助けるでしょう:)
編集:
バベルポリフィルである必要はありませんが、私が使用した唯一のものです。
Gothdoが言ったように:await
キーワードは関数スコープ内になければなりません。さらに、この関数定義にはasync
キーワードが必要です。
これは、トップレベルのスコープでawait
キーワードを使用できないことを意味します。
Async/awaitはbabel-preset-stage-3
Async to generator transform を使用します。
$ npm install babel-plugin-transform-async-to-generator
.babelrc
ファイルに次の行を追加します。
{
"plugins": ["transform-async-to-generator"]
}
Babel 7にアップグレードし、段階ではなくbabel-envを使用することをお勧めします(こちらを参照してください: https://github.com/babel/babel-upgrade )。
それに応じてアップグレードするために使用できるコマンドがあります。
npx babel-upgrade
transform-async-to-module-method
プラグインを使用して自分でコンパイルできます。これにより、ES6ジェネレーター(node4で利用可能)を必要とするbluebirdコルーチンにコンパイルできます。
または、ブラウザと互換性があるようにES5にコンパイルし直す必要がある場合は、transform-async-to-generator
とfacebookのregenerator
を使用できます。
ここでbabelの設定を行う方法について書きました http://madole.xyz/async-await-es7/