Nodemon提示检测到变更重启但实际未生效,访问页面返回304是什么原因?
问题原因及解决方案
1. 路由注册顺序错误(核心代码问题)
你提供的代码中app.listen(3000)的执行顺序在app.get('/')路由注册之前,Express启动端口监听后再注册的路由不会生效,哪怕Nodemon正常重启服务也无法加载新路由逻辑。
正确代码顺序示例:
const express = require('express') const app=express() app.use(express.urlencoded({extended:false})) // 先完成所有中间件、路由的注册 app.get('/',((req,res)=>{ res.send(`<a href="/login">Login</a> <a href="/register">Register</a> `) })) // 最后启动端口监听 app.listen(3000)
2. 浏览器缓存导致304状态码
304状态码表示浏览器判定服务端资源未修改,直接加载了本地缓存的旧页面,没有请求最新的服务端内容。
对应解决方法:
- 访问页面时按
Ctrl+Shift+R(Windows系统)/Cmd+Shift+R(Mac系统)强制刷新,跳过本地缓存 - 开发阶段可在Express中添加禁用缓存的中间件,彻底避免缓存问题,示例代码:
app.use((req, res, next) => { res.set('Cache-Control', 'no-store') next() })
3. Nodemon监听配置异常
如果完成上述两步后仍未生效,检查Nodemon的监听规则:
- Nodemon默认仅监听
.js、.mjs、.json后缀的文件,如果你修改的是模板文件、静态资源文件,需要手动配置监听后缀 - 可以在项目根目录新建
nodemon.json配置文件,自定义监听规则,示例:
{ "ext": "js,html,ejs,css" }
内容的提问来源于stack exchange,提问作者vinDev
相关产品推荐
相关产品推荐

