2016-06-20 3 views
8

D3をインポートしてAngular2モジュールで使用できるようにしようとしています。Angular2-Seed + Typing + D3:インポートエラー 'モジュールが見つかりません' d3 ''

いくつかの背景情報:

  • 私は活字体でAngular2を書いています。
  • 私は私がやったことAngular2-seed

を使用しています:

  1. 私はNPM D3パッケージインストール:私はそれとして、タイピングを使用してD3タイプの説明をインストールし

    npm install d3 --save 
    
  2. をAngular2-Seedが既にインストールしているライブラリに使用するものです。

    typings install d3 --save 
    
  3. その後、私のAngular2モジュールファイルで、私は、import文

    import * as d3 from 'd3'; 
    
    を追加

結果は、TSCが私にモジュール 'D3' を見つけることができませんエラーメッセージ」を与えているということです"。何が欠けているのか、間違っているのですか?だから、

+0

[こちら](https://www.npmjs。com/package/ng2-nvd3) –

+0

私はそれをインストールしましたが、discreteBarChartデモを設定しましたが、ブラウザのエラーやコンパイルエラーがなくても、ブラウザに表示されません。しかし、NG2-NVD3を動作させるためにはるかに多くの時間を費やす前に、私はよりうまくやっていきたいと考えています.NVD3は高度なカスタムビジュアリゼーションを構築する必要があるため、私にはあまり役に立たないでしょう。 – Devaro

答えて

3

package.jsonですでに同様の依存関係を持っている場合:

"dependencies": { 
    ... 
    "d3": "^3.5.17", 
    ... 
} 

あなたが/tools/config/seed.config.tsに行くと追加することができます 'D3': '$ {this.NPM_BASE} D3/d3.min.js'SYSTEM_CONFIG_DEV目的で、等:

protected SYSTEM_CONFIG_DEV: any = { 
    defaultJSExtensions: true, 
    packageConfigPaths: [ 
     `${this.NPM_BASE}*/package.json`, 
     `${this.NPM_BASE}**/package.json`, 
     `${this.NPM_BASE}@angular/*/package.json` 
    ], 
    paths: { 
     [this.BOOTSTRAP_MODULE]: `${this.APP_BASE}${this.BOOTSTRAP_MODULE}`, 
     '@angular/core': `${this.NPM_BASE}@angular/core/bundles/core.umd.js`, 
     '@angular/common': `${this.NPM_BASE}@angular/common/bundles/common.umd.js`, 
     '@angular/compiler': `${this.NPM_BASE}@angular/compiler/bundles/compiler.umd.js`, 
     '@angular/forms': `${this.NPM_BASE}@angular/forms/bundles/forms.umd.js`, 
     '@angular/http': `${this.NPM_BASE}@angular/http/bundles/http.umd.js`, 
     '@angular/router': `${this.NPM_BASE}@angular/router/index.js`, 
     '@angular/platform-browser': `${this.NPM_BASE}@angular/platform-browser/bundles/platform-browser.umd.js`, 
     '@angular/platform-browser-dynamic': `${this.NPM_BASE}@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js`, 
     'rxjs/*': `${this.NPM_BASE}rxjs/*`, 
     'd3': '${this.NPM_BASE}d3/d3.min.js', 
     'app/*': `/app/*`, 
     '*': `${this.NPM_BASE}*` 
    }, 
    packages: { 
     rxjs: { defaultExtension: false } 
    } 

助けてくれたら教えてください。ありがとう!

+0

ありがとう、これはまさに欠けていたものでした。 [Angular2-Seed](https://github.com/mgechev/angular2-seed)を使う前に、System.config()のパスやパッケージ変数を編集するのは、ほとんどのライブラリを追加する共通ステップでしたが、まだこの種子で同等のことをする方法を学んでいない。 – Devaro

+0

最終Angular2の最初のリリースでは、systemjs.jsへの追加は、d3.jsがインストールされているフォルダにする必要があります。明確にするには、d3をダウンロードした場所を指し示す必要があります。 d3のサブフォルダに設定ファイルと同じフォルダがありますので、その行は次のようになります。 'd3': './d3/d3.min.js' これはマップの最後の行です。オブジェクトです。 ご清聴ありがとうございます。 –

1

私は同じ問題を抱えていましたが、上記の答えは私の解決策のデバッグに役立ちました。設定問題でしたが、[email protected]を使用していました。{root} /e2e/tscconfig.json (追加することによって:

 "types": [ 
     "d3" 
    ] 

を次のように:

{ 
    "compileOnSave": false, 
    "compilerOptions": { 
    "declaration": false, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "outDir": "../dist/out-tsc-e2e", 
    "sourceMap": true, 
    "target": "es5", 
    "typeRoots": [ 
     "../node_modules/@types" 
    ], 
    "types": [ 
     "d3" 
    ] 
    } 
} 

をtscconfig.jsonが同様に{ルート}/srcに/であることを覚えておいてください、私はこれで更新され、私はまだ持っていました。依存関係の問題:

import * as D3 from 'd3'; 

私のコンポーネントでは、このエラーが発生します。これが少なくとも1人の人に役立つことを願っています!

+0

私のために働いたThanx –

+0

ありがとうございます。私はタイピングのRFCを開いてd3のタイピングを更新しました。私は応答を得て、変更を提出しました。しかし、彼らは必要なテストファイルを作りませんでした。 –

関連する問題