You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express.js运行报错:express() not a function与ES模块引用问题

报错根因

两个报错均为模块规范不匹配导致,和Node版本没有关系:

  1. 第一个require is not defined报错:项目根目录下的package.json中配置了"type": "module",Node会默认将所有.js后缀文件按照ES Module规范解析,CommonJS规范的require语法在该模式下无法使用。
  2. 第二个express is not a function报错:import * as express from "express"的写法会将模块所有导出内容包裹为一个命名空间对象,express的可执行构造函数挂载在该对象的default属性上,直接调用express()会触发类型错误。
可选解决方案

两种方案二选一即可,不需要同时操作:

方案1:保留ES Module模式(和当前package.json配置匹配)

修改server.js的导入语法为ES Module默认导入,完整代码如下:

import express from "express";
const app = express();
// 可选:添加启动日志方便确认服务运行状态
app.listen(3000, () => {
  console.log("服务已启动,监听3000端口");
});

修改完成后直接在终端运行node server.js即可正常启动服务。

方案2:切回CommonJS模式

以下两种操作任选其一即可:

  • 打开项目根目录的package.json,删除"type": "module"配置项,保存后最初编写的require语法代码不需要改动,直接运行node server.js即可启动服务。
  • 保留package.json中的"type": "module"配置,将代码文件server.js重命名为server.cjs,Node会自动将.cjs后缀文件识别为CommonJS规范文件,原require写法的代码可直接正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:39:20