导入express报Cannot read properties of undefined (reading 'prototype')如何解决
该报错的所有可能触发原因
该报错的核心根因为:express依赖的Node.js原生http模块加载异常,导致http.ServerResponse为undefined,具体诱因如下:
- 运行环境不匹配
错误地将express引入到浏览器端(如React、Vue等前端项目)运行,http是Node.js专属内置模块,浏览器环境无该模块,自然无法读取ServerResponse属性。常见于全栈项目开发中,误将后端业务代码导入到前端入口文件的场景。 - Node.js版本与express版本不兼容
当前使用的Node.js版本过旧,与安装的express版本要求的运行环境不匹配,旧版Node.js的http模块结构不符合当前express的预期,导致ServerResponse不存在。 - 依赖损坏或安装异常
node_modules目录下的express相关依赖因网络中断、磁盘错误等原因损坏,无法正确加载依赖的原生模块。可删除node_modules文件夹、package-lock.json/yarn.lock/pnpm-lock.yaml文件后重新执行依赖安装命令尝试修复。 - 模块系统配置冲突
项目使用ES Module语法(import)导入express,但package.json中未配置"type": "module",或项目存在ES Module与CommonJS规范混用的情况,导致模块加载上下文异常,http模块加载失败。 - 原生模块被自定义内容覆盖
项目根目录下存在命名为http.js/http.ts的自定义文件,或引入的第三方依赖重写了原生http模块,导致express加载时获取到的是被篡改后的http对象,不存在ServerResponse属性。 - 打包工具配置错误
用Vite、Webpack、Rollup等工具打包Node.js后端代码时,配置项错误:比如将target设置为web而非node,或是错误地将http等原生模块标记为外部依赖排除打包,导致运行时无法正确加载http模块。
补充说明:import {express} from 'express'本身是错误写法,express为默认导出,正确导入语法为import express from 'express'。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

