2016-12-05 3 views
2

저는 각도 2의 FileSaver.js를 사용하고 있습니다. 나는 각 2 종자를 사용하고Angular2 FileSaver.js

error TS2304: Cannot find name 'saveAs'

이처럼 내 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' 
    }; 

내가 사용할 수 있습니다 내 구성 요소에 저장 :

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"); 
    } 

의미 론적 오류로 인해 내 클라우드 환경으로 푸시 될 때 내 빌드가 실패합니다. 단지 사실

h.saveAs is not a function

답변

3

그러나

import { saveAs } from 'file-saver'; 

, 이것은 나에게 오류를 제공합니다

npm i @types/file-saver 

이 저를 가져올 수 있습니다 :

나는 통해 입력을 추가하려고했습니다 그것을 알아 내었다. 내가 타이프 라이터 그것을 사용하기 위해 변수를 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');

마우스 오른쪽 버튼을 사용하여에 대한 참조를 할당.

지금 어디 내가, FileSaver을 사용하여 파일을 저장하고 싶었 난 당신이

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

및 사용을 사용하여 가져올 수 있습니다 타이프 라이터 2.x에서을 위해, 그러나

fileSaver.saveAs(blob, fileName);

를 사용하여 호출 할 것 그것으로 :

fileSaver.saveAs(blob, fileName);