我使用Visual Studio Code进行NodeJS和Typescript开发。 如果我正在编写此代码:
import * as http from 'http';
编译说error TS2307: Cannot find module 'http'.
如何处理此错误?
格尔茨
答案 0 :(得分:32)
这对我有用:
npm install @types/node --save
我意识到OP已经有一段时间了,但是这是一个更新的答案,以防有人遇到这个问题。
答案 1 :(得分:1)
我有同样的问题。它类似于: https://github.com/TypeStrong/ts-node/issues/216
安装以下内容后输入:
typings install dt~node --global --save
然后将其添加到我的文件中:
///<reference path="../typings/globals/node/index.d.ts"/>
突然间它起作用了。
答案 2 :(得分:0)
此错误在Typescript中发生,因为http
和Node.js的其他模块是用Javascript编写的。 Typescript编译器没有有关使用Javascript编写的库的类型和模块的信息。要添加此信息,您需要在Typescript项目中包括Node.js的类型声明。
在项目的根目录中执行以下终端命令:
npm install -D @types/node
就是这样!现在错误应该消失了。
以上命令将为Node.js下载类型声明文件(.d.ts
)。现在,您可以在项目的目录./node_modules/@types/node
中看到文件,http.d.ts
是其中之一。在此文件中,您将找到http
模块的声明以及所有类型的声明,例如IncomingMessage
,ServerResponse
以及HTTP服务器中使用的其他类型。这就是Typescript编译器和VS代码使用类型声明信息为您提供类型安全的方式。
@类型:
有一个由社区维护的存储库,称为
DefinitelyTyped,其中包含许多旧的和新的Javascript库(例如Express,Sequelize,JQuery等)的类型声明文件。当您在命令中指定@types
软件包时,表示您正在从DefinitelyTyped存储库下载声明类型。
-D标志:
该命令还将自动在devDependencies
文件的package.json
部分中添加Node.js的类型,如以下代码片段所示:
{
...
"devDependencies": {
...
"@types/node": "^14.0.27"
}
}
-D
标志可确保类型进入devDependencies
文件的package.json
部分而不是dependencies
部分。因为仅在开发而不是生产中才需要此软件包。请勿使用其他答案中提到的--save
标志,因为它会在dependencies
的{{1}}部分中添加类型依赖关系,并在服务器安装过程中增加不必要的文件。
就是这样!