Javascript 财产';服务器';不存在于类型';“类型”;http「';

Javascript 财产';服务器';不存在于类型';“类型”;http「';,javascript,node.js,typescript,socket.io,ecmascript-6,Javascript,Node.js,Typescript,Socket.io,Ecmascript 6,我知道,var someModule=require('someModule')通常被“someModule'中的import*替换为someModule,但我不知道如何使用Typescript/ES6语法来表示以下Node.js代码: var server = require('http').Server(app); 读后 我尝试了以下方法: import * as httpModule from 'http'; const server = httpModule.Server(app);

我知道,
var someModule=require('someModule')
通常被“someModule'中的
import*替换为someModule,但我不知道如何使用Typescript/ES6语法来表示以下Node.js代码:

var server = require('http').Server(app);
读后 我尝试了以下方法:

import * as httpModule from 'http';
const server = httpModule.Server(app);
代码确实正确编译和运行,但我仍然收到以下TS错误:

[ts]属性“Server”在“http”类型上不存在。

我安装了@types/node和@types/express。我遗漏了什么吗?

试试这个:

import { Server, createServer } from 'http';
const server = createServer(app);


澄清:您正在使用。

@Felix Kling我已经编辑了我的问题,相信它不再是本作品的复制品,谢谢。但我想了解为什么它会这样,而我的解决方案不会。另外,如果我们使用的都是
createServer
,为什么要从
http
导入
Server
?有什么见解吗?看看导入是如何工作的,你把默认导入和命名导入混为一谈,正如在回答中更新的一样。根据TypeScript文档,使用
*
,就像我一样,不导入默认导出,而是“将整个模块导入到单个变量中,并使用它访问模块导出”。这就是为什么我不明白它不起作用。从技术上讲应该是这样的。我没有设置节点,但您应该能够检查/调试“httpModule”包含的内容。