1

D3 4.0 および Ionic2/Angular2 プロジェクトの import ステートメントに問題があります。

私は正しい import ステートメントを使用していると信じており、すべてがコンパイルされます。

import * as d3Request from 'd3-request'; 

export class HomePage { 

  constructor() {

    d3Request.xml('assets/mysvg.svg')
      .mimeType("image/svg+xml")
      .get(function(error, xml) {
        if (error) throw error;
        document.body.appendChild(xml.documentElement);
      });
   }
}

次のようにコンパイルされます。

var d3Request$1 = unwrapExports(d3Request);

var d3Request$2 = Object.freeze({
    default: d3Request$1,
    __moduleExports: d3Request
});

...
 d3Request$2.xml('assets/mysvg.svg')
    .mimeType("image/svg+xml")
    .get(function (error, xml) {
       if (error) throw error;
       document.body.appendChild(xml.documentElement);
    });

ただし、実行時にはxml関数は に存在しませんd3Request$2.xml。のみに存在しd3Request$2.__moduleExports.xmlますが、コードはそれにコンパイルされません。何を与える?

私もimport d3Request from 'd3-request'コンパイルしてみましたが、まだ動作しません。結果:

var d3Request$1 = unwrapExports(d3Request);

...
d3Request$1.xml('assets/emojis/laughing.svg')
   .mimeType("image/svg+xml")...

d3Request$1ただし、未定義になるため、これはまだ機能しません。d3Request.xml存在しますが、コードはそれにコンパイルされません。コンパイルするとd3Request$1.xml!

4

1 に答える 1

1

unwrapExports(...)とは、ES モジュールのバージョンではなく、__moduleExportsCommonJS ファイルをインポートしていること (およびrollup-plugin-commonjsで変換していること)を示しています。うまくいかないのは奇妙ですが、問題はありません。正しいファイルをインポートすることで、変換を完全に回避できます。

Rollup 構成ファイルを確認せずに特定することはできませんが、rollup-plugin-node-resolveを使用していると思いますか? その場合、解決策は、 Rollup がこのファイルではなくこのファイルjsnext: trueを見つけることができるように、オプションが設定されていることを確認することです。

于 2016-10-10T23:38:40.413 に答える