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

Node.js新手项目报错:Identifier 'express' has already been declared 问题解决求助

解决Node.js中"Identifier 'express' has already been declared"语法错误

这个错误的核心原因很明确:你在同一个作用域里重复使用const声明了express变量——const不允许对同一个标识符进行多次声明,哪怕是重复执行相同的require语句也会触发这个语法错误。

第一步:定位重复声明的位置

先检查你的代码文件:

  • 看看是否不小心复制了多行const express = require('express'),比如粘贴代码时重复了这一行;
  • 检查是否有被注释掉但没完全删除的代码片段里,还保留着const express的声明;
  • 如果你的代码里引入了其他本地模块,确认那些模块里没有意外声明全局的express变量(不过这种情况概率很低,因为模块作用域是隔离的)。

顺便修正代码里的其他潜在问题

除了这个语法错误,你的代码里还有几个会导致后续运行失败的小bug,一起帮你修正了:

  1. 变量名拼写错误:你声明了dadosRouter,但使用路由时写成了dataRouter,这会触发dataRouter is not defined错误;
  2. 未定义的port变量:第一个app.listen里用了port但没声明,建议从环境变量获取或者直接指定3000;
  3. 模板字符串语法错误:$(3000)应该是${3000},否则会输出字面量而非变量值;
  4. 重复调用app.listen:启动服务器只需要一次调用即可,重复调用没有意义。

修正后的完整代码

const express = require('express'); 
const app = express(); 
require('dotenv').config() 
const mongoose = require('mongoose') 
const dadosRouter = require('./routes/data') 

// 连接MongoDB数据库
mongoose.connect(process.env.MONGO, { useNewUrlParser: true }) 
const db = mongoose.connection 
db.on('error', (error) => console.error(error)) 
db.once('open', () => console.log('Connected to database')) 

// 配置中间件
app.use(express.json()) 
app.set("view engine", "ejs"); 
app.use(express.urlencoded({ extended: false})) 

// 挂载路由(修正变量名拼写)
app.use('/data', dadosRouter) 

// 根路径响应
app.get('/', (req, res) => { res.send("Opening") }) 

// 启动服务器(使用环境变量端口或默认3000)
const port = process.env.PORT || 3000;
app.listen(port, ()=> { console.log(`Server running on localhost:${port}`) }); 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 17:52:38