Angular2 – 在客户端需要模块

在Node.js / Express / Angular2 / typescript(IDE = Visual Studio)应用程序的上下文中,我试图将第三方.js实用程序(packery)加载到客户端(用于指令中)。 有人为它打字稿的定义。 d.ts文件如下所示:

declare module "packery" { interface PackeryOptions { stuff... } class Packery { stuff .... } export = Packery; } 

我引用这个d.ts文件,告诉浏览器.js打包脚本的位置,然后导入模块:

 import Packery = require('packery'); 

这个编译没有投诉。 然而,在运行时,浏览器尝试(并失败)在http:// localhost / packery上查找“packery”,而不知道packery是一个导入的库。 这与我在客户端上所做的其他import声明形成鲜明对比,例如:

 import {Http, HTTP_PROVIDERS} from 'angular2/http'; 

哪些工作 – 据我可以告诉只有两件我给它的信息也是一个d.ts文件和.js文件的位置,就像打包。 但是,我一定错过了一些东西。 已经尝试了文件位置和链接的许多组合,不能得到它的工作。 我怎样才能得到正确的链接到“packery”?

谢谢!

我发现了一个解决方法,并认为我会张贴万一它帮助任何人,虽然我仍然有困难与原来的问题中提出的设置,也就是获取types的语句:

 import foo = require('foo') 

在CLIENT端运行。 这些工作在我的服务器node.js,但在客户端,对于已通过脚本标记加载的第三方库,我不能得到它的工作,即使我添加映射条目到system.jsconfiguration文件,而不pipe我是否指向.js文件或d.ts文件。

无论如何,如果使用脚本标记加载库,那么工作是什么,然后在IDE中将参考path放在CLIENT端代码的顶部

 /// <reference path="foo.d.ts" /> 

并确保您的d.ts文件不会声明模块/名称空间,而是直接导出方法等。 这使IDE可以毫无怨言地编译,客户端代码可以访问第三方库。

但是,我不确定是否最好/最好的做法来做我所做的或者如果应该configurationSystem.js莫名其妙。

types是没有用types化语言编写的js库的空定义。 他们只是在IDE的提示和东西的开发中很有用,在你的应用程序中,你仍然会像往常一样使用库,在你的index.html中添加js文件,或者从你的js文件中加载。