试图将JavaScript sdk加载到Angular2应用程序中。找不到所有依赖项

时间:2017-09-25 00:12:51

标签: javascript angular typescript sdk

我正在尝试在Angular2应用程序中使用此库:https://github.com/MagicTheGathering/mtg-sdk-javascript

不幸的是,我一直在试图将它加载到我的应用程序中。

首先,在TypeScript端,如果我使用:

导入它
<pre></pre>

没有类型可以加载到{}。

如果我尝试使用类似的东西加载它:

import { } from 'mtgsdk';

我无法,因为它说它无法找到名为mtgsdk的模块。

我已经使用

安装了模块
import * as mtg from 'mtgsdk'

此外,npm安装适用于其他模块。

如果我通过类似于此的东西加载应用程序,应用程序编译正常:

npm install --save mtgsdk

采用这种方法,我能够编译并启动,但在浏览器中,我收到了一些无法找到的模块错误。我认为它们是没有加载的sdk的先决条件,所以我开始通过package.json将它们引入。

对于我带来的每一个,我必须转到systemjs.config.js并添加一个指向模块入口点的条目,并且经常必须使用这样的块指定默认扩展名:

指针

var mtg = require('mtgsdk');

默认扩展程序

'mtgsdk': 'npm:mtgsdk/lib/index.js',
'request-promise': 'npm:request-promise/lib/rp.js',
'ramda': 'npm:ramda/dist/ramda.js',
'emitter20': 'npm:emitter20/index.js',
'bluebird': 'npm:bluebird/js/browser/bluebird.js',
'request': 'npm:request/index.js'

我不确定这是否是正确的方法,因为我添加的依赖项越多,我最终需要的就越多。有一次,我最多添加了50个额外的依赖项,因为每次启动时,浏览器控制台都会找到更多需要的东西。

有没有更简单的方法加载所有这些?

此外,其中一些(例如硬饼干和请求承诺核心)加载非常有问题,我无法让浏览器控制台停止抱怨它们。最后,其中一些似乎非常基本,如url,http,https。看起来他们应该已经存在了。

1 个答案:

答案 0 :(得分:0)

在先前版本的Angular 2中使用systemjs,但Angular 2已演变为Angular 4,具有超级新功能,如Angular CLI

我建议你使用Angular CLI,@angular/cli

导入节点模块

由于mtgsdk是一个节点模块,您可以使用

轻松导入它
import * as mtg from 'mtgsdk'

但是,要编译程序,必须为其安装类型定义。或者在/typings.json中为其声明一个,否则您的应用可能无法构建。

导入客户端脚本

对于firebase.js等客户端脚本,您不再需要在systemjs.config.js中添加客户端脚本作为条目。

使用@angular/cli,您可以轻松地将其添加到scripts[] array angular-cli.json中以进行自动编译。

然后像这样访问它们

declare const firebase: any;

Here是一个快速入门教程,用@angular/cli设置 Angular