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
相关产品推荐
相关产品推荐

