首次使用Express.js(ES模块import方式)遇TypeError: exp.express is not a function错误的解决方法
解决Express ES模块导入的TypeError问题
嘿,我来帮你搞定这个问题!你遇到的TypeError: exp.express is not a function错误,核心是Express的ES模块导出逻辑和你的导入方式不匹配,再加上Node.js默认不启用ES模块,导致了双重问题,一步步来解决:
1. 修正导入语句
Express的ES模块默认导出就是创建应用的核心函数,不是嵌套在express属性里的。你不需要用import * as exp这种命名空间导入,直接用默认导入就好:
import express from "express"; const app = express(); app.listen(3000, function() { console.log("server start running"); });
如果非要用命名空间导入(其实没必要,默认导入更简洁),也可以这样写:
import * as exp from "express"; const app = exp.default();
2. 让Node.js识别ES模块
Node.js默认把.js文件当成CommonJS模块处理,想用import/export语法,必须明确告诉它这是ES模块:
- 打开项目根目录的
package.json文件 - 添加
"type": "module"字段(放在最外层,和name、version同级)
{ "name": "your-project", "type": "module", "version": "1.0.0", "dependencies": { "express": "^4.18.2" } }
3. 重新运行服务
保存所有修改后,在Hyper终端重新执行:
node server.js
这下应该就能正常启动服务,看到server start running的日志啦!
内容的提问来源于stack exchange,提问作者chengxuyuan9527




