使用Express时,Axios请求触发服务器重启问题求助
解决Express服务器发完Axios请求就自动重启的问题
嘿,我来帮你捋捋这个问题~首先得明确:服务器自动重启基本都是因为后端用的自动重启工具(比如nodemon)捕捉到了文件变化,而你的增删词汇操作刚好触发了某个被监听文件的修改,才导致服务器重启的。那个__webpack_hmr的200是前端热重载的正常请求,和后端重启没啥直接关系哈。
下面是具体的排查和解决步骤:
1. 先检查后端的文件监听配置
如果你是用nodemon启动服务器的,它默认会盯着项目里所有文件的变化。你得看看有没有把不该监听的文件/目录排除在外:
- 要是有
nodemon.json配置文件,打开它看看ignore字段,把数据存储相关的目录(比如存词汇的JSON文件所在的data/)、前端静态文件目录public/、node_modules/都加进去,比如:{ "ignore": ["data/*", "node_modules/*", "public/*"] } - 要是直接用命令行启动nodemon,就加
--ignore参数,比如nodemon server.js --ignore data/,确保那些会被请求修改的文件不在监听范围内。
2. 确认API请求是不是修改了被监听的文件
你的/api/vc/add接口是把词汇存在哪里?如果是存在本地的JSON文件里,而这个文件刚好在nodemon的监听列表里,那每次增删词汇都会修改这个文件,自然就触发服务器重启了。
- 去看后端的路由代码,要是真的在写本地文件,要么把这个文件移到nodemon忽略的目录里,要么干脆换成数据库(比如MongoDB、SQLite)来存数据,这样就不会因为文件修改触发重启了。
3. 临时验证:关掉自动重启工具试试
要是你暂时拿不准问题在哪,可以直接用node server.js启动服务器,不用nodemon。这时候如果发请求服务器不再重启,那就实锤是nodemon的监听配置问题,回到第一步调整忽略规则就行。
额外小提示
如果你的项目是前后端同构的,webpack配置可能也会有文件监听,但核心问题还是后端自动重启工具的配置。重点排查每次请求后哪些文件被修改了,把这些文件排除在监听之外就好啦~
内容的提问来源于stack exchange,提问作者G.Lee
相关产品推荐
相关产品推荐

