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

Node.js项目启动报错:EADDRINUSE 端口8000被占用求助

解决Express项目端口8000被占用的问题

解决方法

1. 更换项目端口

直接修改app.js中的端口配置,将8000替换为其他未被占用的端口(比如8080):

const port = 8080; // 替换原有的8000端口

2. 找到并终止占用8000端口的进程

Windows系统操作:

  • 打开命令提示符,执行以下命令查找占用端口的进程ID(PID):
netstat -ano | findstr :8000
  • 根据输出的PID,执行命令强制终止进程:
taskkill /F /PID <查到的PID数字>

macOS/Linux系统操作:

  • 打开终端,执行命令定位占用端口的进程:
lsof -i :8000
  • 执行命令终止进程:
kill -9 <查到的PID数字>

3. 代码层面自动处理端口占用(可选)

可以在启动服务时添加错误监听,自动尝试下一个可用端口:

app.listen(port, () => {
  console.log(`server listen on port ${port}`);
}).on('error', (err) => {
  if (err.code === 'EADDRINUSE') {
    console.log(`Port ${port} is busy, trying port ${port + 1}...`);
    app.listen(port + 1);
  } else {
    console.error(err);
  }
});

项目代码

app.js

const express = require("express");
const path = require("path");

const homeRouter = require("./routes/home.routes");

const app = express();
const port = 8000;

app.use(express.static(path.join(__dirname, "assets")));
app.use(express.static(path.join(__dirname, "images")));

app.set("view engine", "ejs");
app.set("views", "views");

app.use("/", homeRouter);

app.listen(port, () => {
console.log(`server listen on port ${port}`);
});

home.routes.js

const router = require('express').Router()

const homeController = require('../controllers/home.controller')

router.get('/', homeController.getHome)

module.exports = router

home.controller.js

const productsModel = require('../models/products.models')

exports.getHome = (req,res,next) => {
    //get products
    //get render index.ejs
    productsModel.getAllproducts().then(products => {
        res.render('index', {
            products: products
        })
    })

}

products.models.js

const mongoose = require("mongoose");

const DB_URL = 'mongodb://localhost:27017/shop'

const productsSchema = mongoose.Schema({
name:String,
image:String,
price:String,
category:String,
description:String
})

const product = mongoose.model('product', productsSchema)

exports.getAllproducts = () => {
    //connect to db
    //get products
    //disconnect
return new Promise((resolve,reject) => {
    mongoose.connect(DB_URL).then(() => {
        return product.find({})
    
    }).then(products => {
        mongoose.disconnect()
        resolve(products)
    }).catch(err => reject(err))
})
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:04:09