2016-12-05 1 views
2

私は角度2のFileSaver.jsを使用しています。しかし、私は私のビルドでセマンティックエラーを取得しています:Angular2 FileSaver.js

error TS2304: Cannot find name 'saveAs'

私は角2シードを使用して、このように私のproject.configにライブラリを追加しています:私は使用することができます

this.NPM_DEPENDENCIES = [ 
     ...this.NPM_DEPENDENCIES, 
{src: 'file-saver/FileSaver.min.js', inject: true}, 

    ]; 


this.SYSTEM_CONFIG_DEV.paths['file-saver'] = 
     `${this.APP_BASE}node_modules/file-saver/FileSaver`; 

    this.SYSTEM_BUILDER_CONFIG.packages['file-saver'] = { 
     main: 'FileSaver.js', 
     defaultExtension : 'js' 
    }; 

私のコンポーネント内のsaveAs:

downloadFile(data: any){ 

     var blob = new Blob([data], { type: 'text/csv' }); 

     //saveAs is a function in the FileSaver.js library https://github.com/eligrey/FileSaver.js 
     saveAs(blob, "results.csv"); 
    } 

問題は、セマンティックエラーが私のクラウド環境にプッシュされたときにビルドに失敗するという問題です。

私は経由して入力を追加しようとしました

:これは、インポートに私を可能に

npm i @types/file-saver 

import { saveAs } from 'file-saver'; 

しかし、これは私にエラーを与える:ちょうど実際に

h.saveAs is not a function

答えて

3

理解した。私はtypescriptですが、それを使用するために変数をdelcareするために必要な:

declare var saveAs:any; 
1

他のソリューションのTSconfigがディレクトリに見て、デフォルトであるのでFileSaver型パッケージに

npm install --save @types/filesaver 

をインストールすることです種類@/*タイプの場合、コード/アプリケーション全体で自動的に認識されます。

+0

私はこれをやってみましたが、上記のエラーが発生しましたh.saveAsは関数ではありません – Bhetzie

3

FileSaverの入力がないので、以下の方法を使用しました。

活字体1.8 のためには、リンクの下から

  1. ダウンロードFileSaver.jsを使用してインポートすることができ、私のプロジェクトディレクトリに保存されました。

https://github.com/eligrey/FileSaver.js/blob/master/FileSaver.js

私はFileSaverを使用していたコンポーネントで2.Then、私が保存されてFileSaver.jsをロードし、右私の輸入後

let fileSaver = require('../../assets/js/FileSaver');

を使用して、それへの参照を割り当てられました。

は今、どこにでも私は、私はあなたが

import * as filesaver from '../../assets/js/FileSaver'; 

と使用を使用してインポートすることができ活字体2.xのために、しかし

fileSaver.saveAs(blob, fileName);

を使用して、それを呼び出すことだろう、FileSaverを使用してファイルを保存したいですそれとして:

fileSaver.saveAs(blob, fileName);