角度 2 FileSaver.js
Angular2 FileSaver.js
我将 FileSaver.js 与 angular 2 一起使用,效果很好;但是,我的构建中出现语义错误:
error TS2304: Cannot find name 'saveAs'
我正在使用 angular 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
其实刚刚想通了。我需要声明变量以便打字稿使用它:
declare var saveAs:any;
其他解决方案是安装 FileSaver 类型的包
npm install --save @types/filesaver
由于 TSConfig 默认在目录 @types/* 中查找类型,它会在您的整个 code/application.
中自动识别
由于 FileSaver 没有任何类型,我使用了以下方法。
对于 Typescript 1.8 您可以使用
导入
- 从下面 link 下载 FileSaver.js 并保存在我的项目目录中。
https://github.com/eligrey/FileSaver.js/blob/master/FileSaver.js
2.Then 在我想使用 FileSaver 的组件中,我加载了保存的 FileSaver.js 并使用
分配了对它的引用
let fileSaver = require('../../assets/js/FileSaver');
在我导入之后。
现在我想使用 FileSaver 保存文件的任何地方,我都会使用
调用它
fileSaver.saveAs(blob, fileName);
但是,对于 Typescript 2.x,您可以使用
导入
import * as filesaver from '../../assets/js/FileSaver';
并将其用作:
fileSaver.saveAs(blob, fileName);
我将 FileSaver.js 与 angular 2 一起使用,效果很好;但是,我的构建中出现语义错误:
error TS2304: Cannot find name 'saveAs'
我正在使用 angular 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
其实刚刚想通了。我需要声明变量以便打字稿使用它:
declare var saveAs:any;
其他解决方案是安装 FileSaver 类型的包
npm install --save @types/filesaver
由于 TSConfig 默认在目录 @types/* 中查找类型,它会在您的整个 code/application.
中自动识别由于 FileSaver 没有任何类型,我使用了以下方法。
对于 Typescript 1.8 您可以使用
导入- 从下面 link 下载 FileSaver.js 并保存在我的项目目录中。
https://github.com/eligrey/FileSaver.js/blob/master/FileSaver.js
2.Then 在我想使用 FileSaver 的组件中,我加载了保存的 FileSaver.js 并使用
分配了对它的引用let fileSaver = require('../../assets/js/FileSaver');
在我导入之后。
现在我想使用 FileSaver 保存文件的任何地方,我都会使用
调用它fileSaver.saveAs(blob, fileName);
但是,对于 Typescript 2.x,您可以使用
导入import * as filesaver from '../../assets/js/FileSaver';
并将其用作:
fileSaver.saveAs(blob, fileName);