我正努力让FileSaver在我的项目中工作。这正是我所采取的步骤
npm install filesaver.js—保存
内部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'。
----更新---
我也试过通过
npm i @types/filesaver

结果是一样的
----更新---
这就是我的工作方法。
添加了@types/filesaver并添加了以下代码。
declare module 'filesaver' {
    var saveAs: any;
    export = saveAs;
}

注意。我修改节点模块文件中的内容是否有问题。这意味着,每当用户运行NPM安装时,自定义代码将不存在。如何绕过它?
从npm下载的默认文件夹名是filesaver.js。我把它改成了文件保存器。为什么他们把它命名为.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β.26节点:61.1OS:达尔文X64
@角度/通用:2.4.5@angular/编译器:2.4.5@angular/核心:2.4.5
@角度/形状:2.4.5@angular/http:2.4.5@angular/材料:
2.0.0-beta.1@角度/平台浏览器:2.4.5@角度/平台浏览器动态:2.4.5@角度/路由器:3.4.5
@角度/编译器cli:2.4.5
typings file

最佳答案

添加到angular 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");

工作原理。
您不应该创建typings.d.ts,它是由angular cli添加的,因此它必须位于项目内的src文件夹中。
当您在部分脚本中添加angular-cli.json时,所有这些脚本都将在页面开始时加载。这就是为什么像您那样包含node_modules中的脚本“./node_modules/filesaver.js/filesaver.min.js”很重要。和您一样,包是用--save标志添加的,所以在删除文件夹并调用npm install时,您的脚本都将就位。
三。

09-18 13:04