2

最近、Ionic2 プロジェクトを から2.0.0-beta.11に更新しました2.0.0-rc.0。Immutable.js (バージョン ^3.8.1) を使用しています。更新後、Ionic Serve コマンド中に次のエラーが発生しました。

[16:50:23] bundle dev started ...
[16:50:40] Error: Module /myproject/node_modules/immutable/dist/immutable.js does not export Map (imported by /myproject/.tmp/effects/catalog.effects.js)
at Module.trace (/myproject/node_modules/rollup/dist/rollup.js:7677:29)
at ModuleScope.findDeclaration (/myproject/node_modules/rollup/dist/rollup.js:7300:22)
at Scope.findDeclaration (/myproject/node_modules/rollup/dist/rollup.js:5351:39)
at Scope.findDeclaration (/myproject/node_modules/rollup/dist/rollup.js:5351:39)
at Scope.findDeclaration (/myproject/node_modules/rollup/dist/rollup.js:5351:39)
at Scope.findDeclaration (/myproject/node_modules/rollup/dist/rollup.js:5351:39)
at CallExpression.bind (/myproject/node_modules/rollup/dist/rollup.js:5826:28)
at /myproject/node_modules/rollup/dist/rollup.js:5151:50
at ReturnStatement.eachChild (/myproject/node_modules/rollup/dist/rollup.js:5168:5)
at ReturnStatement.bind (/myproject/node_modules/rollup/dist/rollup.js:5151:7)

app.module.ts ファイルにインクルードを追加する必要があるかどうかわかりません。私はおそらく何かが恋しいです。

ありがとう。

4

2 に答える 2

2

プロジェクトとセットアップについて詳しく知らなければ、問題と解決策、エラーメッセージが何であるかを正確に知ることは困難です...

エラー: モジュール /myproject/node_modules/immutable/dist/immutable.js はマップをエクスポートしません

...手がかりが得られます。そのファイルは UMD モジュールであり、デフォルトで Rollup は JavaScript モジュール ( import/export宣言付き) のみを認識します。rollup-plugin-commonjsを使用して変換できますが、この場合Map、コードを実際に実行しなければ Immutable に名前付きのエクスポートがあることを Rollup が知る方法がないため、追加の手順が必要です。(場合によっては、それを理解します。たとえば、モジュールにexports.foo = bar名前付きエクスポートが追加されるfoo場合、イミュータブルは別の方法で処理を行います。)

そこで、namedExportsrollup-plugin-commonjs のオプションを使用してそれを支援します。

plugins: [
  commonjs({
    include: 'node_modules/**',
    namedExports: {
      'node_modules/immutable/dist/immutable.js': [ 'Map', 'Set', ... ]
    }
  }),
  ...
]

CommonJS モジュールのセマンティクスは ES モジュールとは根本的に異なるため、これは残念ですが必要です。

于 2016-10-03T17:31:10.097 に答える
1

これは、更新が必要な重要な問題でした。

于 2016-10-04T06:59:25.747 に答える