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

Express与Node.js分离app和server后Postman请求ECONNREFUSED报错

Express/Node.js分离app与server后Postman请求ECONNREFUSED 127.0.0.1:3000问题

将Express与Node.js项目中的app和server文件分离后,终端显示数据库及Node服务已在3000端口正常运行,但使用Postman请求app.get('/')等接口时,出现Error: connect ECONNREFUSED 127.0.0.1:3000错误,调整相关设置后仍未解决。


关键代码

./routes/users.js

const express = require('express');
const router = express.Router();
const { registerUser, getUserList, login, updateUser, deleteUser } = require('../controller/users');
const validateToken = require('../middlewares/auth');

router.post('/login', login);
router.post('/registeruser', registerUser);
router.get('/list', validateToken, getUserList);
router.patch('/update/:userId', validateToken, updateUser);
router.delete('/delete', validateToken, deleteUser);

module.exports = router;

connect.js(数据库连接)

const mongoose = require('mongoose');
const color = require('colorette');

const connectDB = (url) => {
    try {
        return mongoose.connect(url, {
            useNewUrlParser: true,
            useUnifiedTopology: true,
        });
    } catch (error) {
        console.log(color.bgRed(error));
    }
};
module.exports = connectDB;

server.js

const app = require('./app');
const http = require('http')

const port = process.env.PORT || 3000;
const connectDB = require("./database/connect");
const server = http.createServer(app);
const color = require('colorette');

// 处理未捕获的异常
process.on('uncaughtException', function (err) {
    console.log(color.red(`Uncaught Exception Error Occurred ${err}`));
});

const startDB = async () => {
    try {
        await connectDB(process.env.MONGO_URL);
        console.log(color.blue(`DB server is connected`));
        server.listen(() => {
            console.log(color.blue(`Node server is running on port ${port}...`));
        })
    } catch (error) {
        console.log(color.red(`ERROR is ${error}`));
    }
};

startDB();

app.js

require("dotenv").config();
const express = require("express");
const app = express();
const cors = require('cors')
const users = require("./routes/users");
app.use(cors());
app.use(express.json());

app.get('/', (req, res) => {
    res.status(200).json(`Hello World`);
})
app.use('a/user', users);
module.exports = app

终端输出

> nodemon server.js

[nodemon] 3.0.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,cjs,json
[nodemon] starting `node server.js`
DB server is connected
Node server is running on port 3000...

Postman报错信息

Error: connect ECONNREFUSED 127.0.0.1:3000

Proxy
id: "958df20d-86ee-40af-8d08-4c3274d302ca"
disabled: false
host: "127.0.0.1"
match: {…}
port: 3000
tunnel: false
authenticate: false

Request Headers
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 515bf6ca-1031-4198-8fda-9c0f99b55c83
Host: localhost:3000
Connection: keep-alive

问题原因及解决方案

核心问题

server.js中调用server.listen()时未传入端口参数,导致服务器并未实际监听3000端口,终端日志的提示存在误导。

修复步骤

修改server.js中的server.listen()调用,传入指定端口:

server.listen(port, () => {
    console.log(color.blue(`Node server is running on port ${port}...`));
})

额外优化点

  1. Postman代理配置:当前报错显示Postman启用了指向127.0.0.1:3000的代理,会导致请求循环代理引发连接拒绝,建议关闭Postman代理或调整配置。
  2. 路由前缀修正:app.js中app.use('a/user', users)的前缀缺少开头的/,应改为app.use('/a/user', users),避免路由匹配异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 22:23:34