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

问题描述:

我正尝试在Angular2应用程序中使用此库:https://github.com/MagicTheGathering/mtg-sdk-javascript试图将JavaScript sdk加载到Angular2应用程序中。无法找到所有依赖项

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

首先,在打字稿侧,如果我导入它使用:

import { } from 'mtgsdk'; 

没有类型加载到{}。

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

import * as mtg from 'mtgsdk' 

我不能,因为它说,它无法找到一个名为mtgsdk模块。

我已经安装使用

npm install --save mtgsdk 

同样的模块,NPM安装其它模块做工精细。

,如果我使用经由一些类似的要求加载应用程序编译罚款:

var mtg = require('mtgsdk'); 

采取这种做法,我能够编译和发布,但在浏览器中,我得到了一些错误关于它无法找到的模块。我认为它们是未加载的sdk的先决条件,所以我开始通过package.json将它们引入。

对于每一个我带来,然后我得去systemjs.config.js并添加一个条目指向模块的入口点,并且往往要指定使用块这样的默认扩展名:

指针

'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' 

默认扩展

'request-promise': 
    { 
     defaultExtension: 'js' 
    } 

我不确定这是否是正确的方法,因为我添加的依赖性越多,我最终需要的就越多。在某一点上,我实际上已经增加了50个额外的依赖项,因为每次启动时,浏览器控制台都会找到更多所需的依赖项。

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

另外,它们中的一些(如tough-cookie和request-promise-core)加载时存在问题,我无法让浏览器控制台停止对它们的抱怨。最后,其中一些看起来很基本,比如url,http,https。看起来他们应该已经在场了。

+0

您正在使用什么版本的Angular? – oreofeolurin

+0

@oreofeolurin 4.3.6 – Minsc

使用systemjs被用于先前版本的Angular 2中,然而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,您可以轻松地将它们添加到angular-cli.jsonscripts[] array中进行自动编译。

然后访问他们这样

declare const firebase: any; 

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

+0

好的,谢谢。我会看一看。 – Minsc

+0

我可以用cli创建的应用程序使用var mtg = require('mtgsdk')加载它; 尽管它在Intellisense中实际显示出来,但我仍然得到了翻译者对我的关于无法找到mtgsdk的信息,但我可以忍受这一点。 – Minsc