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

使用Postman Desktop Agent请求时遇read ECONNRESET错误求助

解决Postman发送请求时出现的"Error: read ECONNRESET"问题

核心问题:请求目标端口错误

你的Express服务器运行在3000端口,但你用Postman向localhost:27017/articles发送请求——27017是MongoDB的服务端口,它只处理MongoDB协议的通信,不支持HTTP请求,因此会直接重置连接,导致你看到的Error: read ECONNRESET错误。

立刻把Postman的请求地址改成localhost:3000/articles,这是解决该错误的关键。

代码中需要修正的其他问题

除了端口问题,你的代码还有几处细节需要调整,避免后续出现其他异常:

  1. 错误的save函数定义
    原save函数参数是err,但函数内调用article.save()时,article变量未定义,正确的写法应该是接收要保存的文档实例:
async function saveArticle(article) {
  try {
    const savedArticle = await article.save();
    console.log(savedArticle + " saved");
    return savedArticle;
  } catch (err) {
    console.log(err);
    throw err;
  }
}
  1. 重复的请求解析配置
    Express 4.16+已经内置了body-parser的功能,你重复配置了bodyParser.urlencoded和express.urlencoded,保留一组即可,推荐使用Express内置的版本:
// 替换重复的body-parser配置
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
  1. POST路由缺少响应返回
    当前POST路由只打印日志,没有给客户端返回任何响应,会导致Postman一直等待直到超时。需要添加响应语句:
app.post("/articles", async function(req, res) {
  console.log("post request")
  console.log(req.body.title);
  console.log(req.body.content);

  // 创建新文章并保存
  const newArticle = new Article({
    title: req.body.title,
    content: req.body.content
  });

  try {
    const savedArticle = await newArticle.save();
    res.status(201).json(savedArticle);
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});
  1. mongoose.connect的混合写法问题
    async函数中同时使用await和回调函数,容易造成逻辑混乱,建议统一用try/catch处理连接错误:
async function main() {
  try {
    await mongoose.connect("mongodb://localhost:27017/wikiDB", settings);
    console.log("Mongdb connected (new code)");
  } catch (err) {
    console.log("Error while connecting to mongDB" + err);
  }
}

修正后的完整代码

//jshint version:6

var express = require('express');
const mongoose = require('mongoose');
let ejs = require('ejs');

//express setup
const app = express();

//EJS setup with express
app.set('view engine', 'ejs');

// 静态资源目录
app.use(express.static("public"));

// 请求解析配置(Express内置,替代body-parser)
app.use(express.urlencoded({ extended: true }));
app.use(express.json());

//Mongoose setup
mongoose.set("strictQuery", false);

var settings = {
  reconnectTries: Number.MAX_VALUE,
  autoReconnect: true
};

async function main() {
  try {
    await mongoose.connect("mongodb://localhost:27017/wikiDB", settings);
    console.log("Mongdb connected (new code)");
  } catch (err) {
    console.log("Error while connecting to mongDB" + err);
  }
}

main().catch(err => console.log(err));

const articleSchema = new mongoose.Schema({
  title: String,
  content: String
});

const Article = mongoose.model("Article", articleSchema);

async function saveArticle(article) {
  try {
    const savedArticle = await article.save();
    console.log(savedArticle + " saved");
    return savedArticle;
  } catch (err) {
    console.log(err);
    throw err;
  }
}

app.get("/articles", function(req, res) {
  Article.find(function(err, foundArticles) {
    if (!err) {
      res.send(foundArticles);
    } else {
      res.send(err)
    }
  });
});

app.post("/articles", async function(req, res) {
  console.log("post request")
  console.log(req.body.title);
  console.log(req.body.content);

  const newArticle = new Article({
    title: req.body.title,
    content: req.body.content
  });

  try {
    const savedArticle = await saveArticle(newArticle);
    res.status(201).json(savedArticle);
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

app.listen(3000, function() {
  console.log("Server started on port 3000");
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:35:20