23

自分のプロジェクト (または任意の npm パッケージ) で Immutable を使用したいとしましょう。npm install編集したので、 にありますnode_modules。もちろん、そこには CommonJS エクスポートがあります。ただし、プロジェクトで es6 モジュールを使用したいと考えています。

私は Webpack を使用してすべてをまとめてコンパイルし、6to5-loader を使用して es6 モジュール構文を処理しています。

私のソースファイルではimport Immutable from 'immutable';--- と言いますが、es6はエクスポートさimportれた es6 を探しているため、これは問題を引き起こしdefaultます (不変またはおそらく他のほとんどの npm パッケージの場合)。コンパイルされたコードは次のようになります。 ---見つけるプロパティvar Immutable = require('immutable')["default"];がないため、もちろんエラーになります。default

es6 モジュールで npm パッケージを使用できますか?

4

2 に答える 2

31

Babel.js の貢献者はこちら。あなたは次のものを探しています:

import * as Immutable from 'immutable';
// compiles to:
var Immutable = require('immutable');

インタラクティブなデモ

注: これは、commonまたはcommonInteropmodules オプションのいずれかと一緒です。その他については、 https ://babeljs.io/docs/usage/modules/ を参照してください。

于 2014-12-05T02:57:53.050 に答える
2

ちょうどそれを理解しました。(解決策はツール固有のものです --- しかし、es6 モジュールは現在、ツール対応である場合にのみ存在するため、「答え」としては十分だと思います。)

6to5 のデフォルトのモジュール変換では、このcommonオプションが使用されているため、上で述べたまさにその問題が発生します。しかし、別のオプションがあります: commonInterop--- 私が扱っている状況に正確に対処するために構築されたに違いありません。https://6to5.github.io/modules.html#common-interopを参照してください

では、6to5 に 3 つの乾杯を。

于 2014-12-05T02:54:57.473 に答える