2016-09-23 13 views
7

Pracuję nad przeniesieniem strony kątowej 1.x do nowej, kanciastej strony 2.0. Stworzyłem stronę za pomocą funkcji kątowej-cli 1.0.0-beta.15.Angular2 FileSaver.js - Nie mogę znaleźć modułu "wygaszacz plików"

Mam przycisk do eksportu niektórych danych do pliku CSV. Kiedy strona ładuje się po raz pierwszy, pojawia się komunikat o błędzie "Nie można znaleźć modułu" "oszczędzający plik", ale po kliknięciu przycisku wszystko działa idealnie.

mam zainstalowany komponent FileSaver.js:

package.json

... 
"dependencies": { 
    ... 
    "@types/filesaver": "0.0.30", 
    "file-saver": "^1.3.2" 
    ... 
} 
... 

w moich export.service.ts:

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

Czy ktoś wie jak rozwiązać ten problem ?

+0

Jestem niemal pewien, że problem leży w różnicy imion, biblioteka o nazwie „file-saver” i .d.ts nazwie „@types/filesaver ". Jeśli ręcznie zmieniam nazwę folderu pod @types z "filesaver" na "file-saver", błąd zniknie. – gamelover42

+0

Wciąż nie mogę znaleźć błędu modułu, nawet po zmianie @ typy/filesaver na @ types/file- wygaszacz – jerryh91

Odpowiedz

0

Zainstaluj nową wersję maszynopisu 2 .. który powinien działać ..

+0

Używam już maszynopisu 2.02 – gamelover42

+0

do obsługi edytora TypeScript 2? –

+0

Tak. Używam Visual Studio Code 1.5.3. Problem zniknął, gdy usunąłem folder .vscode i ponownie otworzyłem kod. Zastanawiam się, czy to nie utknęło w jakiś sposób. – gamelover42

2

Na kątowe-cli należy:

1) zainstalować bibliotekę do node_modules:

npm i -S file-saver 

2) dodać odniesienie do pliku js na 'skrypty' w pliku kątowe-cli.json:

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

3) na typin Plik gs.d.ts:

declare function saveAs(); 

po których można użyć saveas() wszędzie trzeba przykład:

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

Powodzenia!

+0

Podczas pracy nie polecam importowania wygaszacza plików w całym projekcie, metoda "Andre Passos" jest czystsza –

+1

@FlavienVolken, która jest poprawna tylko wtedy, gdy biblioteka js ma definicję typu do zaimportowania. Niektóre biblioteki nie używają modułów eksportu i nie można ich używać w ten sposób, co wymaga globalnego importu. Po tym, wygaszacz plików ma typy i dlatego lepiej jest zaimportować przy użyciu składni importu. –

6

prostu użyć tego importu statment

import * as fileSaver from 'file-saver'; 
Powiązane problemy