2017-02-12 29 views
2

我努力讓FileSaver在我的項目中工作。這裏是確切的一步,我花了獲取外部JS庫爲Angular 2工作

  1. NPM安裝filesaver.js --save

  2. 內app.component.ts

進口*爲FileSaver從「filesaver。 JS';

然後我得到這個錯誤

找不到模塊 'filesaver.js'。

我也試圖添加以下到我的角cli.json文件

"scripts": [ 
    "../node_modules/filesaver.js/FileSaver.min.js" 
    ] 

This的是,我能找到,可以幫助最接近的一次。然而,這個人和我有不同的設置。有一個簡單的方法來使用這個文件嗎?

請注意,從npm安裝FileSaver後,在我的節點模塊中,我得到filesaver.js文件夾(不知道爲什麼他們有.js作爲文件夾名稱)。此文件夾中,我得到FileSaver.js和FileSaver.min.js

我也曾嘗試

進口*爲FileSaver從 'filesaver.js/FileSaver.min.js';

但是,這只是給了我

找不到模塊 'filesaver.js/FileSaver.min.js'。)

----更新---

我也試過typings file這個via

npm i @types/filesaver 

,結果是一樣的

---- -----更新

這是我如何得到它的工作。

添加@ types/filesaver並添加了以下代碼。

declare module 'filesaver' { 
    var saveAs: any; 
    export = saveAs; 
} 

注意。我在修改node_module文件中的內容是不好的。這意味着每次用戶運行npm install時,自定義代碼都不會在那裏。如何解決它?

從npm下載的默認文件夾名是filesaver.js。我將其更改爲filesaver。他們爲什麼會把它命名爲。JS,程序似乎有麻煩識別出它是一個文件夾

然後導入*爲filesaver從「filesaver」

然後我可以叫

var blob = new Blob(['Some Content'], { type: "text/csv;charset=utf-8" }); 
filesaver.saveAs(blob, "hello world.csv"); 

-----文件夾結構 - ---

角-CLI:1.0.0-beta.26節點:6.9.1 OS:達爾文64 @角/共同:2.4.5 @角/編譯器:2.4.5 @角/芯:2.4.5 @ angular/forms:2.4.5 @a ngular/HTTP:2.4.5 @角/材料: 2.0.0-beta.1 @角/平臺的瀏覽器:2.4.5 @角/平臺的瀏覽器的動態:2.4.5 @角/路由器:3.4.5 @角/編譯器CLI:2.4.5

folder structure

+0

您需要相應的.d.ts文件才能將JS文件識別爲TS模塊。使用現有的,即https://www.npmjs.com/package/@types/filesaver – estus

+0

感謝您的答覆。我忘了提及我也試過npm i @ types/filesaver --save。但是,它沒有工作。有什麼步驟來使它與它一起工作? CHeers – user172902

+0

考慮到你有TS 2.0,它通常按照你所描述的完成。 – estus

回答

0

添加到角CLI(你沒有)

"scripts": [ 
    "../node_modules/filesaver.js/FileSaver.min.js" 
    ] 

然後加爲src/typings.d.ts

declare function saveAs(data: Blob, filename: string) 

現在您可以使用此方法而不需要任何導入。

var blob = new Blob(['Some Content'], { type: "text/csv;charset=utf-8" }); 
saveAs(blob, "hello world.csv"); 

它是如何工作的。

  1. 你不應該創建typings.d.ts,其通過添加角度-CLI所以它必須是在你的SRC文件夾中的項目內。
  2. 當您在角cli.json在部分腳本添加,那麼所有的腳本將在頁面加載啓動。這就是爲什麼它的重要的是你從node_modules包括腳本,像你這樣「../node_modules/filesaver.js/FileSaver.min.js」。並用--save標誌補充包,像你一樣,所以任何時候的文件夾被刪除,你叫NPM安裝腳本將在地方。 3.
+0

我是否創建自己的文件typings.d.ts,因爲它現在還沒有?另外,我的應用組件知道如何加載它?唯一的d.ts文件目前在我的node_module/@類型中。但是我不想在那裏添加任何東西,因爲每次有人執行npm install時文件夾都會被破壞。歡呼 – user172902

+0

@ user172902我已更新回答 –

+0

謝謝。請使用我的文件夾結構和角度cli版本的屏幕截圖查看我更新的問題。我相信我使用的是相當新的版本,並沒有typings.d.ts文件。我還通過修改node_module/@ types/filesaver(我從npm install @ types/filesaver --save獲得)中的d.ts文件來獲得代碼。但是,由於問題中提到的原因,不喜歡這種方法。如果您可以告訴我如何才能將typings.d.ts文件放入src文件夾中,我想在之前給出您的方法?歡呼 – user172902