Typescript - 在Visual Studio Code上找不到模块'http'

R3T*_*ech 11 nodes typescript visual-studio-code

我正在使用Visual Studio Code进行NodeJS和Typescript开发.如果我正在编写此代码:

import * as http from 'http'; 
Run Code Online (Sandbox Code Playgroud)

编译说 error TS2307: Cannot find module 'http'.

如何处理这个错误?

格尔茨

Iso*_*ted 41

这对我有用:

npm install @types/node --save
Run Code Online (Sandbox Code Playgroud)

我意识到OP已经有一段时间了,但是这是一个更新的答案,以防有人遇到这个问题.


Yog*_*ity 13

更新的解决方案

这个错误发生在 Typescript 中,因为httpNode.js 和其他模块都是用 Javascript 编写的。Typescript 编译器没有有关用 Javascript 编写的库的类型和模块的信息。要添加此信息,您需要在 Typescript 项目中包含 Node.js 的类型声明。

在项目的根目录中执行以下终端命令:

npm install -D @types/node
Run Code Online (Sandbox Code Playgroud)

就是这样!现在错误应该消失了。


幕后发生了什么?

上面的命令将下载.d.tsNode.js 的类型声明文件 ( )。./node_modules/@types/node现在您可以在您的项目目录中看到这些文件,并且http.d.ts是其中之一。在此文件中,您将找到http模块和所有类型的声明,例如IncomingMessageServerResponse以及 HTTP 服务器中使用的其他类型。这就是 Typescript 编译器和 VS 代码如何使用类型声明信息来为您提供类型安全性。

@类型:

有一个名为DefiniteTyped 的社区维护存储库,其中包含许多新旧 Javascript 库(例如 Express、Sequelize、JQuery 等)的类型声明文件。当您在命令中指定@types包时,这意味着您正在从DefinitelyTyped存储库下载声明类型。

-D 标志:

devDependencies该命令还将自动在文件部分添加 Node.js 的类型package.json,如以下代码片段所示:

{
  ...
  "devDependencies": {
    ...
    "@types/node": "^14.0.27"
  }
}
Run Code Online (Sandbox Code Playgroud)

-D标志确保类型进入文件devDependencies的部分package.json而不是dependencies部分。因为这个包仅在开发中需要,而不是在生产中需要。不要使用其他答案中提到的标志,因为它会在部分中--save添加类型依赖项,并使用不必要的文件使服务器安装膨胀。dependenciespackage.json

就是这样!


And*_*ard 1

我有同样的问题。类似于: https: //github.com/TypeStrong/ts-node/issues/216

安装打字后:

typings install dt~node --global --save
Run Code Online (Sandbox Code Playgroud)

然后将其添加到我的文件中:

///<reference path="../typings/globals/node/index.d.ts"/>
Run Code Online (Sandbox Code Playgroud)

突然间它就起作用了。