2016-11-04 66 views
0

我刚刚在VS2015中开始使用TypeScript,到目前为止它已经非常顺利。我已经建立了一个结构,并且它正在编译和按预期进行。VS 2015找不到模块,但cli节点工作

但是,当我试图包含npm-installed模块时,问题就出现了。

这工作没有任何问题:

import * as fs from 'fs'; 

fs是默认情况下可用。但是,当我使用npm来安装其他模块(在本例中为xml2js)时,VS 2015宣称无法识别模块。

import * as xml2js from 'xml2js'; 

... 

Error TS2307 Cannot find module 'xml2js'. 

但有趣的是,如果我去到项目文件夹,然后运行CLI命令

node app.js 

它编译没有错误。因此,即使package.json包含正确的包,VS 2015似乎也不会识别这些模块。

另一件事,在2015年VS观众的解决方案,包装上市,但都标有一个红色的圆圈,见下图:

Note the red circles on the packages in the npm tree

有谁知道红色圆圈表示?

我可能在某处做了一个bobo,或者跳过了一个关键部分,但我没有足够的人去成功Google它。

任何帮助表示赞赏。

+1

包装是否附带打字(.d.ts文件)?如果不是,您可能需要使用类型(npm -i -g typings)或tds将类型添加到解决方案中。 – Juan

+0

您能否介绍一下?由于它超出了我的知识基础,这可能是我的问题的一部分。我运行了你提到的npm命令,但VS仍然不能识别这些模块,即使在安装类型之后重新安装之后。 –

回答

1

好的,感谢胡安的评论,我能解决我的问题。当你知道TypeScript和模块如何工作时,解决方案很简单。

总之,模块通常是在开发js时考虑到的。当你开始使用TypeScript时,你打算使用的模块需要用TypeScript来开发(请参阅Juan关于类型,.d.ts文件的评论)。一个很好的例子就是模块时刻。

但对于其他人,少利用图书馆,你可能需要用DefinitelyTyped模块(DefinitelyTyped

在这里你会找到最可用的不同模块的支持,以补充ordenary模块。这将下载预期模块的TS补码,允许您像平常一样导入模块。更详细的信息可以在上面的链接中找到。

+0

很高兴你知道了,很抱歉没有回答你的评论只是看到它!还要记住,Definitely Typed上的类型有时由不同的人员维护,因此可能存在不匹配,可能会过时或不完整。所以记得要求你对他们所做的任何修改回到绝对类型的回购中!最好的解决方案是他自己找到的! – Juan

相关问题