ExpressJS应用异常排查求助:仅throw new Error生效,其余功能无响应
解决ExpressJS应用除throw语句外功能失效的问题
嘿,我一眼就揪出问题所在了——你代码里的那行throw new Error("NOT WORKING!")是直接在全局代码块里执行的,它会立刻终止整个Node.js进程,导致后面的路由注册、服务器监听这些关键代码根本没机会运行!这就是为什么只有这个throw能触发,其他功能全失效的核心原因。
解决方案
- 删除/注释掉那行测试用的throw语句:这行代码完全阻塞了后续代码的执行,是问题的罪魁祸首。
- 恢复测试路由(可选但建议):你之前注释掉的根路由可以帮你快速验证服务器是否正常启动。
修改后的完整代码
const express = require('express'); // 创建ExpressJS应用 const bodyParser = require('body-parser'); // 处理请求体 const app = express(); // 配置请求体解析中间件 app.use(express.json()) // 解析application/json类型请求 app.use(express.urlencoded({ extended: true })) // 解析application/x-www-form-urlencoded类型请求 // 数据库连接配置 const dbConnect = require('./config/AtlasConnect.js'); const mongoose = require('mongoose'); // 连接MongoDB数据库 mongoose.connect(dbConnect.database.url, { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => { console.log("Successfully connected to the MongoDB database"); }).catch(err => { console.log('Unable to connect to the MongoDB database', err); process.exit(); }); // 测试根路由,验证服务器状态 app.get('/', (req, res) => { res.json({"message": "My Phone Shop App. Use the app to manage your favourites!"}); }); // 注册用户相关路由 require('./app/routes/Users.routes.js')(app); // 启动服务器监听端口3000 app.listen(3000, () => { console.log("Server listening on port 3000"); });
验证步骤
- 运行修改后的代码,终端应该会依次输出数据库连接成功的提示和服务器监听的提示
- 打开浏览器或者用Postman访问
http://localhost:3000,应该能收到预期的JSON响应 - 测试你的用户路由,确认接口能正常处理请求
内容的提问来源于stack exchange,提问作者Jaffer Jaffry
相关产品推荐
相关产品推荐

