【发布时间】:2017-06-30 12:33:48
【问题描述】:
我正在努力让 FileSaver 参与我的项目。这是我采取的确切步骤
npm install filesaver.js --save
在 app.component.ts 内
从 'filesaver.js' 导入 * 作为 FileSaver;
然后我得到这个错误
找不到模块“filesaver.js”。
我还尝试将以下内容添加到我的 angular-cli.json 文件中
"scripts": [
"../node_modules/filesaver.js/FileSaver.min.js"
]
This 是我能找到的最接近的可能会有所帮助。但是,这家伙的设置与我不同。一定有一种简单的方法来使用这个文件吧?
注意,从 npm 安装 FileSaver 后,在我的节点模块中,我得到了 filesaver.js 文件夹(不知道为什么他们有 .js 作为文件夹名称)。在这个文件夹中,我得到 FileSaver.js 和 FileSaver.min.js
我也试过了
从 'filesaver.js/FileSaver.min.js' 导入 * 作为 FileSaver;
但这只是给了我
找不到模块'filesaver.js/FileSaver.min.js'。)
----更新---
我也尝试过typings file
npm i @types/filesaver
结果是一样的
----更新-----
这是我如何让它工作的。
添加了@types/filesaver 并添加了以下代码。
declare module 'filesaver' {
var saveAs: any;
export = saveAs;
}
注意。我正在修改我的 node_module 文件中的内容是不是很糟糕。这意味着每次用户运行 npm install 时,自定义代码都不会出现。如何绕过它?
从 npm 下载的默认文件夹名称是 filesaver.js。我将其更改为文件保护程序。为什么他们将其命名为 .js,程序似乎无法将其识别为文件夹
然后从'filesaver'导入*作为文件保护程序
那我可以打电话了
var blob = new Blob(['Some Content'], { type: "text/csv;charset=utf-8" });
filesaver.saveAs(blob, "hello world.csv");
-----文件夹结构-----
angular-cli:1.0.0-beta.26 节点:6.9.1 操作系统:darwin x64 @angular/common:2.4.5 @angular/编译器:2.4.5 @angular/core:2.4.5 @angular/forms: 2.4.5 @angular/http: 2.4.5 @angular/material: 2.0.0-beta.1 @angular/platform-browser: 2.4.5 @angular/platform-browser-dynamic: 2.4.5 @angular/router: 3.4.5 @angular/compiler-cli: 2.4.5
【问题讨论】:
-
您需要对应的.d.ts文件才能将JS文件识别为TS模块。使用现有的,即npmjs.com/package/@types/filesaver
-
感谢您的回复。我忘了提到我也试过 npm i @types/filesaver --save。但是,它没有用。让它与它一起工作的步骤是什么?干杯
-
考虑到你有TS 2.0,一般按照你说的来做。
-
你知道一个在 Angular 2 中广泛使用的非常流行的外部 js 库吗?我可以尝试导入它,看看是否有任何问题。这样我就会知道哪一步可能是问题所在。也会有更多的信息。
-
试试
bluebird和@types/bluebird,例如。问题与 TS 有关,与 A2 无关。
标签: angular typescript angular-cli filesaver.js