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

gg0vcinb  于 2023-03-31  发布在  TypeScript
关注(0)|答案(5)|浏览(235)

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

import * as http from 'http';

编译器显示error TS2307: Cannot find module 'http'.
如何处理此错误?
格雷茨

axr492tv

axr492tv1#

这对我很有效:

npm install @types/node --save

我意识到这是一段时间以来的行动,但这是一个更更新的答案,以防有人绊倒在这个问题上。

fjnneemd

fjnneemd2#

更新溶液

Typescript中出现此错误是因为http和Node.js的其他模块是用Javascript编写的。Typescript编译器没有关于用Javascript编写的库的类型和模块的信息。要添加此信息,您需要在Typescript项目中包含Node.js的类型声明。
在项目的根目录中执行以下终端命令:

npm install -D @types/node

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

幕后是什么?

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

@types:

有一个社区维护的仓库名为DefinitelyTyped,其中包含许多新旧JavaScript库的类型声明文件,如Express,Sequelize,JQuery和许多其他库。当您在命令中指定@types包时,这意味着您正在从DefinitelyTyped仓库下载声明类型。

-D标志:

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

{
  ...
  "devDependencies": {
    ...
    "@types/node": "^14.0.27"
  }
}

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

8zzbczxx

8zzbczxx3#

我知道这个问题已经很老了,但我发现当tsconfig.json文件丢失或您有一个空的(“types”:[""])compilerOptions中“types”属性的数组。
下面的配置将解决你的问题。当然你需要有@types/node,你也可以在那里添加更多的类型。

{
  "compilerOptions": {
    "types": ["node"]
  }
}

更多信息你可以查看链接

j9per5c4

j9per5c44#

我也有同样的问题。和那个差不多:https://github.com/TypeStrong/ts-node/issues/216
安装打字后:

typings install dt~node --global --save

然后把这个添加到我的文件中:

///<reference path="../typings/globals/node/index.d.ts"/>

突然间,它起作用了。

ffx8fchx

ffx8fchx5#

我在我的Angular 12项目中遇到了这个问题,当时我的IDE的自动完成将此导入插入到组件文件中,而我没有注意到:
import * as e from 'cors';
删除这一行解决了问题。

相关问题