2016-09-23 53 views
7

我正致力於將角度1.x站點移動到新的角度2.0站點我使用angular-cli 1.0.0-beta.15創建站點。Angular2 FileSaver.js - 找不到模塊'文件保護程序'

我有一個按鈕來導出一些數據到CSV文件。當頁面第一次加載時,我得到一個錯誤消息「無法找到模塊'文件保護程序'」,但是當我點擊按鈕時,一切正常。

我已經安裝了FileSaver.js組件:

的package.json

... 
"dependencies": { 
    ... 
    "@types/filesaver": "0.0.30", 
    "file-saver": "^1.3.2" 
    ... 
} 
... 
在我export.service.ts

import { saveAs } from 'file-saver'; 
... 
let file = new Blob(['hello world'], { type: 'text/csv;charset=utf-8' }); 
saveAs(file, 'helloworld.csv'); 
... 

有誰知道如何解決這個錯誤?

+0

我相當肯定,問題出在名字的差距,圖書館被命名爲「文件保護」和.d.ts被命名爲「@types/filesaver」。如果我手動將@types下的文件夾從「filesaver」重命名爲「file-saver」,錯誤消失 – gamelover42

+0

即使將@ types/filesaver更改爲@ types/file-保存者 – jerryh91

回答

0

安裝新的打字稿2版本..這應該工作..

+0

我已經在使用typescript 2.02 – gamelover42

+0

做你的編輯器支持TypeScript 2嗎? –

+0

是的。我正在使用Visual Studio代碼1.5.3。一旦我刪除.vscode文件夾並重新打開代碼,問題就消失了。我想知道它是不是卡住了。 – gamelover42

2

在角CLI,你應該:

1)安裝庫到您的node_modules:

npm i -S file-saver 

2)在angular-cli.json文件中的'腳本'中添加js文件的引用:

"scripts": ["../node_modules/file-saver/FileSaver.js"] 

3)on your typin gs.d.ts文件:

declare function saveAs(); 

後,您可以使用的saveAs()無處不在,你需要例如:

export class MyClass{ 
    constructor(){ 
    saveAs(blablabla...) 
    } 
} 

祝您好運!

+0

當它工作時,我不會建議在整個項目中導入文件保護程序,「Andre Passos」的方式更簡潔 –

+1

@FlavienVolken僅當js庫具有要導入的類型定義時纔有效。一些圖書館不使用出口模塊,不能以這種方式使用,因此需要全球導入。 話雖如此,文件保護程序確實有類型,因此,最好使用導入語法導入。 –

6

只使用進口statment

import * as fileSaver from 'file-saver'; 
相關問題