Node.js中Express的/world GET路由无法访问问题求助
问题分析与修复方案
核心错误:中间件调用方式错误
你写的 app.use(cors, bodyParser.json()) 里,cors 是一个需要执行的函数,直接传入函数本身无法生成有效的中间件,会导致请求卡在这个环节,根本到不了 /world 路由。正确写法是调用 cors() 生成中间件:
app.use(cors(), bodyParser.json());
路由与中间件顺序问题
你把 app.listen(3000) 写在了中间件和 /world 路由之前,虽然Express允许这种写法,但规范上应该把启动服务器的代码放在所有路由、中间件注册完成之后,确保所有配置都能生效。
额外优化:处理MongoDB连接状态
目前的MongoDB连接没有状态监听,建议加上成功/失败的回调,方便排查数据库相关问题:
const db = mongoose.connection; db.on('error', console.error.bind(console, 'MongoDB连接错误:')); db.once('open', function() { console.log('MongoDB连接成功'); });
完整修复后的代码
const express = require("express"); const app = express(); const mongoose = require("mongoose"); const Observation = require("./schema/dreamWorld"); const bodyParser = require("body-parser"); const cors = require("cors"); // 先注册中间件 app.use(cors(), bodyParser.json()); // 定义路由 app.get("/", (req, res) => res.send("Hello World")); app.get("/world", (req, res) => { return res.status(200).json({ message: "HAppy?" }); }); // MongoDB连接及状态监听 const mongoDB = "mongodb://127.0.0.1/test"; mongoose.connect(mongoDB, { useNewUrlParser: true, useUnifiedTopology: true }); const db = mongoose.connection; db.on('error', console.error.bind(console, 'MongoDB连接错误:')); db.once('open', function() { console.log('MongoDB连接成功'); }); // 最后启动服务器 app.listen(3000, () => console.log("Server started on port 3000"));
内容的提问来源于stack exchange,提问作者Ellu
相关产品推荐
相关产品推荐

