使用TypeScript导入带有typings的node和express

23

我正在尝试使用TypeScript在Visual Studio Code中设置一个Express/Node应用程序,遵循Microsoft指南,但将其更改为使用TypeScript,然而,在安装类型定义时,使用typings 似乎需要安装比指南中更多的软件包。

我运行以下一对命令:

typings install node --ambient --save
typings install express --ambient --save

然而,仅使用这些软件包进行构建会产生以下类型的错误:

error TS2307: Cannot find module 'serve-static'.

对于以下类型:

  • mime
  • express-serve-static-core
  • serve-static

我可以通过安装所需的类型定义来解决此问题,但是似乎这应该是类型定义本身应该完成的工作。

我想检查一下是否缺少自动拉取依赖项的基本步骤,或者指南是否已过时?

如果相关,请参考我的tsconfig.json文件:

{
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "sourceMap": true,
        "outDir": "bin",
        "sourceRoot": "src"
    },
    "exclude": [
        "node_modules",
        "typings/browser.d.ts",
        "typings/browser"
    ]
}

我的tsc版本是1.8.7,并且我已经全局安装了TypeScript。


1
虽然如果它能够提取环境声明就太好了,但目前它还不能,并且很可能不会改变。请参见此问题以及此评论 - chrisbajorin
只是一个小提示,“ambient”现在已经被弃用了:typings ERR! deprecated The "ambient" flag is deprecated. Please use "global" instead - Musa Haidari
3个回答

31

自TypeScript 2.0上个月发布以来,安装typings的推荐工具是我们值得信赖的老朋友npm,而不是typingstsd

npm install @types/node --save

使用npm,您再也不需要担心“全局”或“环境”安装问题。

您也不必再担心将<reference>标签添加到源文件顶部了;只需将以下属性放入tsconfig.json中的compilerOptions中,TypeScript编译器将自动找到您安装的npm类型定义:

"typeRoots": [ "node_modules/@types" ]

这篇博客文章详细解释了一些变化:https://blogs.msdn.microsoft.com/typescript/2016/06/15/the-future-of-declaration-files/


5
在 TypeScript 2 中,@types 模块被定义为类型声明的默认模块。因此,只要它是唯一的类型文件夹,就不需要设置 "typeroots" : [ "node_modules/@types" ] - Samuel Kupferschmid
1
这太不可思议了!真是救命稻草。打字已经成为一件非常痛苦的事情了。 - Angad
1
我很久没有时间研究TypeScript了,但现在这似乎对我有用。我已经将其更改为被接受的答案。 - Underscore

8
我链接的教程现已更新,包含以下命令:
typings install node --ambient
typings install express serve-static express-serve-static-core --ambient

请参考 @cdbajorin 的评论,了解为什么依赖项不会自动下载。


8
typings-1.0.0中,_--ambient_已更名为_--global_。 - Stewart Francis
2
据我所知,现在安装的默认存储库是npm。新增了一个名为env的存储库,其中包含用于环境(如node)的类型声明。我使用了以下命令:typings install env~node@4.0.0 --save --global不确定这是否会改变您依赖项的全局依赖关系情况。 - Stewart Francis

2
为了避免让大家感到困扰,获取Node.js的typings的魔法命令现在是:typings install node --source env --global --save。请注意保留HTML标签,但不要添加解释。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接