プロジェクト(または任意のnpmパッケージ)でImmutableを使用したいとします。 _npm install
_したので、_node_modules
_にあります。もちろん、そこにはCommonJSのエクスポートがあります。ただし、プロジェクトでes6モジュールを使用したいと思います。
私はWebpackを使用してすべてをまとめてコンパイルし、6to5ローダーを使用してes6モジュール構文を処理しています。
私のソースファイルでは、_import Immutable from 'immutable';
_ ---と言いますが、es6 import
がエクスポートされたes6default
を探しているため、これは問題を引き起こします。ケース(Immutableまたはおそらく他のほとんどすべてのnpmパッケージの場合)。コンパイルされたコードは次のようになります。var Immutable = require('immutable')["default"];
---検索するdefault
プロパティがないため、もちろんエラーがスローされます。
Es6モジュールでnpmパッケージを使用できますか?
Babel.js 寄稿者はこちら。あなたは以下を探しています:
import * as Immutable from 'immutable';
// compiles to:
var Immutable = require('immutable');
注:これは、
common
またはcommonInterop
モジュールオプションのいずれかを使用します。その他については、以下を参照してください: https://babeljs.io/docs/usage/modules/
ちょうどそれを理解しました。 (ソリューションはツール固有です---しかし、es6モジュールは、ツールが有効になっている場合にのみ存在するため、これで十分な「答え」だと思います。)
6to5のデフォルトのモジュール変換はcommon
オプションを使用します。これにより、上記で把握した非常に問題が発生します。しかし、別のオプションがあります:commonInterop
---これは私が扱っている状況に正確に対処するために構築されたに違いありません。 https://6to5.github.io/modules.html#common-interop を参照してください
だから6to5のための3つの歓声。