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

Express无法在localhost显示求助:无报错但页面加载停滞

Express页面加载卡住无响应问题排查与修复

问题描述

我是Express初学者,此前连接localhost一切正常,但现在出现问题:控制台无报错、日志显示正常,但页面卡在加载状态无任何提示。想知道问题出在代码脚本还是网络?

我的代码

const bodyParser = require('body-parser')
const express = require('express')
const app = express()
console.log("ff")
const mongoose=require('mongoose')  
mongoose.set('strictQuery',false)
require('dotenv/config')

const db=mongoose.connection
db.on('error',(error)=>console.error(error))
db.once('open',()=> console.log('connect to db'))

mongoose.connect(
    process.env.DB_CONNECTION
    ,{ useNewUrlParser:true })
app.use(logger)
app.use(bodyParser.json)
app.get('/',logger,(req,res)=>{
    console.log("ddd")
    //res.status(500)
    res.json({ username : "alex"})

})

const userRouter = require('./routes/users')

function logger(req,res,next){
    console.log(req.originalUrl)
    next()
}
app.use('/users',userRouter)
app.listen(3000)

问题定位与修复

问题出在代码脚本,不是网络问题,核心错误有两处:

1. bodyParser中间件调用错误

app.use(bodyParser.json) 缺少括号,正确写法是 app.use(bodyParser.json())。

  • bodyParser.json 是一个函数,必须调用它才能返回处理JSON请求的中间件函数。直接传入函数本身的话,Express无法完成请求处理流程,导致请求挂起,页面一直加载。

2. 函数声明顺序问题(潜在风险)

logger 函数在 app.use(logger) 之后才定义,虽然JavaScript函数声明会提升,但这种写法容易引发混淆和后续问题,建议将 logger 函数移到使用它的代码之前。

修正后的代码

const bodyParser = require('body-parser')
const express = require('express')
const app = express()
console.log("ff")
const mongoose = require('mongoose')  
mongoose.set('strictQuery', false)
require('dotenv/config')

// 提前定义logger函数
function logger(req, res, next){
    console.log(req.originalUrl)
    next()
}

const db = mongoose.connection
db.on('error', (error) => console.error(error))
db.once('open', () => console.log('connect to db'))

mongoose.connect(
    process.env.DB_CONNECTION,
    { useNewUrlParser: true }
)

app.use(logger)
// 修正bodyParser.json的调用,添加括号
app.use(bodyParser.json())
app.get('/', logger, (req, res) => {
    console.log("ddd")
    res.json({ username : "alex"})
})

const userRouter = require('./routes/users')
app.use('/users', userRouter)

// 添加服务器启动提示,方便确认运行状态
app.listen(3000, () => {
    console.log('服务器已启动,访问地址:http://localhost:3000')
})

验证说明

修正后重启服务器,访问 http://localhost:3000 就能正常返回JSON数据,页面不会再卡住。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:25:21