You need to enable JavaScript to run this app. TypeScript结合Node.js开发时导入http模块报无默认导出错误问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript结合Node.js开发时导入http模块报无默认导出错误问题咨询

报错核心原因

Node.js 内置 http 模块采用 CommonJS 规范导出结构,@types/node 提供的类型声明中未给该模块配置默认导出(default export),因此直接使用 import http from 'http' 的 ES 模块默认导入写法,会直接触发类型校验报错,该问题与是否正确安装 @types/node 依赖无关联。

解决方法
  • 采用兼容CommonJS结构的命名空间导入(零配置改动,最稳妥)
    仅需替换原有导入语句,其余业务代码无需调整:
    import * as http from 'http';
    http.createServer((req, res) => {
      res.end('Hello World');
    }).listen(3000, () => console.log('Port is running on 3000'));
    
  • 修改TypeScript全局配置开启模块导入兼容
    调整项目根目录的 tsconfig.json,在 compilerOptions 节点添加对应配置,即可保留原有 import http from 'http' 的写法且正常通过类型检查:
    {
      "compilerOptions": {
        "esModuleInterop": true,
        "allowSyntheticDefaultImports": true
      }
    }
    
  • 切换为Node.js原生ES模块模式开发
    先在项目 package.json 中添加 "type": "module" 字段,将项目运行环境切换为原生ES模块模式,此时可直接搭配 node: 路径前缀使用默认导入写法,运行时与类型检查均无报错:
    // 开启type:module声明后可正常使用的写法
    import http from 'node:http';
    http.createServer((req, res) => {
      res.end('Hello World');
    }).listen(3000, () => console.log('Port is running on 3000'));
    

内容的提问来源于stack exchange,提问作者Ashutosh sarangi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 03:15:01