2

Rollup と Babel を使用してES2017JavaScript (特にasync/await関数) をトランスパイルするときにエラーが発生します。ES5

「babel」プラグインで \src\index.js を変換中にエラーが発生しました: オプション {"modules":false} が \node_modules\babel-preset-es2017\lib\index.js に渡されましたが、これはオプションを受け入れません。

私の.babelrcファイル:

{
  "presets": [
    "es2017"
  ],
  "plugins": [
    "transform-runtime"
  ],
  "comments": false
}

当然、presetsからes2017に変更してコードes2015をコメントアウトすると、エラーはなくなりasync/awaitます。

アプリケーションはES2017機能 (つまりasync/await) を使用しますが、NPM パッケージとして (ES6 (ES2015)モジュールとして) 公開され、後でジェネリックにトランスパイルされることに注意してES5 (ES2009)ください。

どうすればこのエラーを回避し、ES2017楽しくトランスパイルできES5ますか?

4

2 に答える 2

0

ファイルes2015のターゲット:.babelrc

"presets": [
    "es2015"
 ],

最初にRollup Async functions plugines2017を追加して機能を前処理します。

非同期関数を、バンドル中に最新のブラウザーまたはほとんどのバージョンの node.js で実行できるジェネレーター関数に置き換えます

プロジェクトに追加します。

npm install --save-dev rollup-plugin-async

そして、次の前に、プラグイン配列に前async処理を挿入します。rollup.config.jsbabel()

import async from 'rollup-plugin-async';

...

plugins: [
        async(),
        babel(babelrc())
],

重要な洞察は、このロールアップ Github の問題のスレッドで見つかりました。@Victorystick は次のことを確認しています (2016 年 10 月 10 日現在)。

ロールアップは現在 ES6 のみを対象としていますが、まもなく ES7 に拡張される可能性があります。今のところ、ES6 を超える機能を使用する場合は、Rollup で処理するためにトランスパイルする必要があります。

async/await は ECMAScript の次のバージョンである ES2017 (別名 ES8) で標準化される可能性が高いため、Babel を実行する前にそれらを処理するための追加のプラグインが必要になります。

注:
YMMV ですが、後でAsyncHelper not found run time Errors using rollup-plugin-asyncWindows 7 を受け取ったので、私の解決策は、コードベース全体でES6 Promisesを優先してnpm uninstall --save-dev rollup-plugin-async使用をロールバックすることでした。async/await

于 2016-10-11T04:55:14.747 に答える