React-TypeScript SPA使用Express报Cannot read 'prototype' of undefined错误
问题核心原因
express是仅适用于Node.js服务端环境的后端框架,依赖Node.js内置的http、fs等原生模块。你正在开发的React-TypeScript SPA最终会运行在浏览器环境,浏览器没有这些Node原生模块的实现,所以才会在加载express代码时触发Cannot read properties of undefined (reading 'prototype')报错。你之前修改webpack target、调整import语法的操作都没有解决环境不匹配的核心问题,因此不会生效。
可行解决方案
- 场景1:你需要用express做后端提供接口
把express相关的后端代码和React SPA前端代码拆分为两个独立项目,本地开发时分别启动两个进程,前端通过fetch、axios等请求工具调用express服务暴露的接口即可,不要在前端代码中导入express。 - 场景2:你需要在SPA中实现路由逻辑
不需要引入express,直接使用前端路由库react-router-dom实现页面路由管理即可。 - 场景3:你需要在同一个仓库维护前后端代码
采用monorepo结构拆分前端、后端两个独立包,express代码放在后端包中单独运行,不要将其导入到前端包的业务代码中。
内容的提问来源于stack exchange,提问作者rafaelpadu
相关产品推荐
相关产品推荐

