首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular2 -在SystemJS中导入第三方javascript

Angular2 -在SystemJS中导入第三方javascript
EN

Stack Overflow用户
提问于 2016-06-16 15:08:55
回答 2查看 2.4K关注 0票数 8

由于某些原因,未映射fileSaver。angular2-jwt工作正常。

我使用npm install file-saver -save来获取文件保护程序,然后引用它,如下所示(我有一个gulp任务将js文件移动到libs目录,我在那里看到了这个文件)

在index.htmlI中包含了src和system.config脚本

代码语言:javascript
复制
    <script src="libs/file-saver/FileSaver.js"></script>

<!-- 2. Configure SystemJS -->
    <script>
      System.config({
        packages: {        
          app: {
            format: 'register',
            defaultExtension: 'js'
          } 
        } ,
        map: {
          "angular2-jwt": "libs/angular2-jwt/angular2-jwt.js"
          ,"fileSaver":"libs/file-saver/FileSaver.js"
        }
      });
      System.import('app/bootstrap')
            .then(null, console.error.bind(console));
    </script>

component.ts

在这里,它找不到fileSaver

代码语言:javascript
复制
import {SaveAs} from 'fileSaver';     

我得到的错误是

代码语言:javascript
复制
 error TS2307: Cannot find module 'fileSaver'.   

你知道这是怎么回事吗?

EN

回答 2

Stack Overflow用户

发布于 2016-07-03 18:43:53

在我的例子中,我是这样工作的:

package.json

代码语言:javascript
复制
"dependencies": {
    // ... all angular dependencies
    "file-saver": "1.3.2"
 },

index.html

代码语言:javascript
复制
<!-- all angular dependencies and other 3rd party -->
<script src="node_modules/file-saver/FileSaver.js"></script>

typings.json

代码语言:javascript
复制
// other typings needed
"filesaver": "github:DefinitelyTyped/DefinitelyTyped/FileSaver/FileSaver.d.ts#d21f1bd1fd079bbc18bc88ed71d2be7f5707e33a"

使用

代码语言:javascript
复制
var blob = new Blob([this.response], {type: 'application/zip'});
saveAs(blob, 'project.zip');

在运行之前,您需要执行npm install

就是这样,希望能有所帮助。

这不会让你import {SaveAs} from 'fileSaver';,也不会有完整的代码完成,但至少它可以工作

票数 2
EN

Stack Overflow用户

发布于 2017-01-28 17:55:49

在中安装库和类型(@types)。然后,

代码语言:javascript
复制
import {saveAs} from 'file-saver';

起作用了。另外,我必须在系统JS配置中将file-saver的模块格式明确设置为cjs:

代码语言:javascript
复制
"packages":{
     "file-saver":{
          "main":"FileSaver.js", 
          "format": "cjs"
     }
}

据我所知,默认情况下,SystemJS会将文件保存程序识别为AMD模块。也许文件保护程序中的AMD模块定义有问题,但我对此理解不深。(另请参阅https://github.com/eligrey/FileSaver.js/blob/master/FileSaver.js#L182)

在没有设置cjs模块格式的情况下,我在运行时得到"fileSaver.saveAs不是一个函数“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37852166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档