我正在使用 nodejs 和 express 来构建一个非常简单的服务器,但是每次我更改我的代码时,都会出现该端口已在使用中的错误

i am using nodejs and express to build a very simple server but every time i changes my code error comes that port already is in use

每次我对代码做一些更改然后 运行 出现这个错误我已经更改了很多端口并且不知道它背后的原因。也请解释一下process.env.PORT的含义及其意义,在此先感谢

index.js

/*******installed modules****** */
        const express = require('express')
        const mongoose = require('mongoose')
        const path = require('path')
    
    /*****user created modules******* */
    const User = require('./model/user')
    const PORT = 8005
    
    
    const app = express()
    
    /*********middlewares**********/
    app.use(express.urlencoded({ extended: true }));
    app.use(express.json());
    app.use(express.static('static'))
    
    
    
    
    /******view engine*********** */
    app.set('views', path.join(__dirname, 'views'));
    
    // Set view engine as EJS
    app.engine('html', require('ejs').renderFile);
    app.set('view engine', 'html');
    
    
    
    
    /********connect with mongoDb cloud********/
    const mongoUrl = 'mongodb+srv://admin:{my_key}@cluster0.zskv7.mongodb.net/myFirstDatabase?retryWrites=true&w=majority'
    mongoose.connect(mongoUrl, { useNewUrlParser: true, useUnifiedTopology: true });
    mongoose.connection.on("connected", () => {
        console.log("connected to mongoDb");
    });
    
    
    
    /*********get request to check if server is working properly*********/
    
    app.get('/', (req, res) => {
        res.render('index')
    })
    
    app.use('/favgame', (req, res) => {
        const { name, fav_game } = req.body
        User.find({ name: name })
            .then((oldUser) => {
                if (oldUser) {
                    return res
                        .status(422)
                        .json({ error: "user already exists in the database" });
                }
                //if user does not exists initially
                //create new user with these details
                const user = new User(req.body);
                user
                    .save()
                    .then((user) => {
                        res.json({ message: "successfully saved" })
                        console.log('User saved successfully')
                    })
                    .catch((err) => {
                        res.send("Error", err)
                        console.log('cannot create user some error');
                    });
            })
    })
    
    
    
    
    /**********listening on server************ */
    app.listen(PORT, (err) => {
        if (err) {
            return console.log(err);
        }
        console.log(`Server started on PORT: ${PORT}`);
    })

错误来了

node:events:342
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::8005
    at Server.setupListenHandle [as _listen2] (node:net:1306:16)
    at listenInCluster (node:net:1354:12)
    at Server.listen (node:net:1441:7)
    at Function.listen (/home/dhruv/Desktop/quiz_question/node_modules/express/lib/application.js:618:24)
    at Object.<anonymous> (/home/dhruv/Desktop/quiz_question/index.js:75:5)
    at Module._compile (node:internal/modules/cjs/loader:1109:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1138:10)
    at Module.load (node:internal/modules/cjs/loader:989:32)
    at Function.Module._load (node:internal/modules/cjs/loader:829:14)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)
    at node:internal/main/run_main_module:17:47
Emitted 'error' event on Server instance at:
    at emitErrorNT (node:net:1333:8)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  code: 'EADDRINUSE',
  errno: -98,
  syscall: 'listen',
  address: '::',
  port: 8005
}

我已经检查了之前发布在类似标题上的问题,但没有得到帮助,应用这些更改也没有解决错误,我知道错误是非常基本的,但无法弄清楚

您收到此错误是因为程序本身正在 运行ning(并使用指定的端口)并且您正在尝试再次 运行 它,简单的解决方案是先停止程序然后运行 再次应用更改,更好的解决方案是使用像 nodemon 这样的热重载帮助程序包,你可以安装它:

npm install -g nodemon

并像这样使用它 运行

nodemon index.js

这将停止并重新运行 服务器上的代码更改保存。

关于process.env.PORT,process.env一般是环境变量对象,由OS或任何其他填充环境变量的工具定义,环境变量在KEY:VALUE形式 PORT 只是定义环境变量的键,process.env.PORT 产生 PORT 环境变量的值。