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

使用Axios连接React与MongoDB时请求失败及非Nodemon下无法提交求助

问题排查与解决方案

一、解决net::ERR_CONNECTION_REFUSED错误

这个错误表示前端无法连接到后端服务,按以下步骤排查:

  • 确认后端服务是否正常启动:不用Nodemon时,直接执行node 你的后端入口文件名.js(比如node server.js),查看控制台是否输出Server running on port : 5000和MongoDB database connection established successfully。如果没有输出,说明服务启动失败。
  • 检查端口是否匹配:前端Axios请求的是http://localhost:5000/users/add,确认后端实际监听端口是5000。如果后端使用环境变量PORT,检查.env文件里的PORT值是否为5000,或者在app.listen前添加console.log(port)验证端口号。
  • 修复MongoDB连接问题:如果后端没输出数据库连接成功的日志,说明连接失败。检查.env中的ATLAS_URI是否正确,同时更新mongoose连接选项(兼容新版MongoDB):
    mongoose.connect(uri, { useNewUrlParser: true, useUnifiedTopology: true });
    

二、解决不用Nodemon时POST请求无效的问题

Nodemon会自动监听文件变化重启服务,不用Nodemon时出现问题的常见原因:

  • 代码修改后未手动重启服务:如果你修改了后端代码(路由、模型等),直接用node命令启动不会加载新代码,需要手动停止服务(Ctrl+C)再重新启动。
  • 确认路由逻辑正确:检查./routes/users.js中的POST /add路由是否正确处理请求,示例正确代码如下:
    const express = require('express');
    const router = express.Router();
    const User = require('../models/user');
    
    router.post('/add', async (req, res) => {
      const newUser = new User({ username: req.body.username });
      try {
        const savedUser = await newUser.save();
        res.json(savedUser);
      } catch (err) {
        res.status(400).json('Error: ' + err);
      }
    });
    
    module.exports = router;
    
  • 确认模型定义正确:models/user.js需正确定义用户字段,示例:
    const mongoose = require('mongoose');
    const Schema = mongoose.Schema;
    
    const userSchema = new Schema({
      username: {
        type: String,
        required: true,
        unique: true,
        trim: true,
        minlength: 3
      }
    }, { timestamps: true });
    
    const User = mongoose.model('User', userSchema);
    module.exports = User;
    
  • 检查依赖是否完整:执行npm install确保express、cors、mongoose等依赖都已正确安装。

额外优化建议

  • 添加前端请求错误捕获:在Axios请求中加入catch块,方便定位问题:
    axios.post('http://localhost:5000/users/add', user)
      .then(res => console.log(res.data))
      .catch(err => console.error('请求错误:', err));
    
  • 精准配置CORS:如果前端运行在特定端口(比如3000),可以指定CORS允许的来源:
    app.use(cors({ origin: 'http://localhost:3000' }));
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:42:28