【问题标题】:How to fix "Error: listen EADDRINUSE: address already in use :::5000" Unhandled 'error' event如何修复“错误:监听 EADDRINUSE:地址已在使用 :::5000”未处理的“错误”事件
【发布时间】:2022-02-25 06:32:22
【问题描述】:

我创建了一个 nodejs 服务器(一个 loginapp),但是当我尝试 node 应用程序时出现了一个错误(她以前不在这里):

events.js:167
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::5000
    at Server.setupListenHandle [as _listen2] (net.js:1290:14)
    at listenInCluster (net.js:1338:12)
    at Server.listen (net.js:1425:7)
    at Function.listen (C:\Users\Corentin\Documents\loginapp\node_modules\express\lib\application.js:618:24)
    at Object.<anonymous> (C:\Users\Corentin\Documents\loginapp\app.js:81:5)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)
Emitted 'error' event at:
    at emitErrorNT (net.js:1317:8)
    at process._tickCallback (internal/process/next_tick.js:63:19)
    at Function.Module.runMain (internal/modules/cjs/loader.js:745:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)

我认为有一个与 mongo 的链接,但我没有看到错误,

这是我的 app.js 代码(未满)问我是否需要更多我的代码

var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var exphbs = require('express-handlebars');
var expressValidator = require('express-validator');
var bodyParser = require('body-parser');
var flash = require('connect-flash');
var session = require('express-session');
var passport = require('passport');
var LocalStrategy = require('passport-local'),Strategy;
var mongo = require('mongodb');
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/loginapp', { useNewUrlParser: true });
var db = mongoose.connection;

var routes = require('./routes/index');
var users = require('./routes/users');

// APP INIT
var app = express();

// VIEW ENGINE
app.set('views', path.join(__dirname,'views'));
app.engine('handlebars', exphbs({ defaultLayout:'layout' }));
app.set('view engine','handlebars');

app.use('/', routes);
app.use('/users', users);

// SET PORT
app.set('port', (5000));

app.listen(app.get('port'), () => {
    console.log('Server lancé sur le port ' + app.get('port'));
});

这是我的 users.js 文件

var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');

var User = require('../models/user');

// REGISTER
router.get('/register', (req, res) => {
    res.render('register');
});

// LOGIN
router.get('/login', (req, res) => {
    res.render('login');
});

// REGISTER
router.post('/register', (req, res) => {
    var name = req.body.name;
    var username = req.body.username;
    var email = req.body.email;
    var password = req.body.password;
    var password2 = req.body.password2;

    // VALIDATION
    req.checkBody('name','Name is required').notEmpty();
    req.checkBody('username','Username is required').notEmpty();
    req.checkBody('email','Email is required').notEmpty();
    req.checkBody('email','Email is not valid').isEmail();
    req.checkBody('password','Password is required').notEmpty();
    req.checkBody('password2','Passwords do not match').equals(req.body.password);

    var errors = req.validationErrors();

    if(errors) {
        res.render('register', {
            errors:errors
        });
    } else {
        var newUser = new User({
            name: name,
            username: username,
            email: email,
            password: password
        });

        User.createUser(newUser, function(err, user) {
            if(err) throw err;
            console.log(user);
        });

        req.flash('success_msg', 'You are now registered and u can log');

        res.redirect('/users/login');
    }
});

module.exports = router;

还有 user.js 文件

var mongoose = require('mongoose');
var bcrypt = require('bcryptjs');

// USER SCHEMA
var UserSchema = mongoose.Schema({
    username: {
        type: String,
        index: true
    },
    name: {
        type: String
    },
    email: {
        type: String
    },
    password: {
        type: String
    }
});

var User = module.exports = mongoose.model('User', UserSchema);

module.exports.createUser = function(newUser, callback) {
    bcrypt.genSalt(10, function(err, salt) {
        bcrypt.hash(newUser.password, salt, function(err, hash) {
            newUser.password = hash;
            newUser.save(callback);
        });
    });
}

非常感谢能帮助我的人!

【问题讨论】:

标签: node.js


【解决方案1】:

试试这个

sudo lsof -i :5000

命令 PID 用户 FD 类型 设备大小/关闭节点名称
节点 20152 abc 21u IPv6 195004 0t0 TCP *:http (LISTEN)

sudo kill -9 20152

【讨论】:

    【解决方案2】:

    这对我有用:

    sudo killall -9 node
    

    【讨论】:

    • 这也适用于我。仅使用 PID 杀死端口对我不起作用。
    【解决方案3】:

    您的快速服务器尝试打开端口 500

    app.set('port', (5000));
    

    错误消息表明,此端口已在使用中。

    您可以更改快速服务器的端口,也可以找到使用端口 5000 的应用程序,看看是否可以更改端口。

    这有帮助吗?

    【讨论】:

    • 我重新启动了我的 vs 代码和我的终端及其工作!感谢您的帮助
    【解决方案4】:

    我遇到了这个错误,我做错的是我两次声明了app.listen(),因此端口已经在使用中。确保你只做一次。

    【讨论】:

      【解决方案5】:

      我发现 fuser -k 5000/tcp 是杀死特定端口上的进程的最快捷方式。

      【讨论】:

        【解决方案6】:

        试试sudo pkill node。不要忘记使用sudo 权限。这对我来说真的很管用。

        我试过kill -9 PID。但它会在每个rs 上再次出现。

        【讨论】:

          【解决方案7】:

          你应该试试:

          netstat -lpn | grep 5000
          

          然后:

          kill -9 PID
          

          【讨论】:

          • "netstat: n: 未知或未检测的协议"
          【解决方案8】:

          您打开了两个终端并打开了与端口 5000 的连接,杀死一个!

          【讨论】:

          • 或者更好的是杀死所有并重新启动pkill -9 node然后启动客户端和/或服务器。
          【解决方案9】:

          重启你的笔记本电脑/服务器,它会释放所有繁忙的端口,然后再试一次……你也可以使用

          ps aux | grep node
          

          然后使用以下命令终止进程:

          kill -9 PID
          

          但大多数时候它对 nodemon 不起作用,对我也不起作用。

          【讨论】:

            【解决方案10】:

            我知道这是一个旧线程,但也许有人会觉得这很有用。

            为了更高效,我在bashrc文件的别名中添​​加了如下bash脚本,这样就不用输入lsof -i:5000,然后复制PID,再运行kill -9 PID

            .bashrc中(通常可以在路径~/.bashrc中找到),在里面某处放如下:

            alias k5k='lsof -t -i:5000 | xargs kill -9'
            

            我将这个别名 k5k 命名为“kill 5,000(k)”,但您可以随意命名。

            然后你可以输入k5k,它会杀死所有在端口5000上运行的实例。

            【讨论】:

              【解决方案11】:

              显示此错误是因为您的 mongodb 正在运行...即 mongod.所以首先退出,然后重新启动你的 Visual Studio 代码。它肯定会工作。

              【讨论】:

                【解决方案12】:

                特定端口运行检查器

                sudo netstat -lpn |grep :5000

                tcp6 | 0 | 0 :::5000 | :::* |听 | 6782/java

                杀死6782

                --------- 或 ---------

                sudo lsof -t -i:5000

                sudo kill -9 $(sudo lsof -t -i:5000)

                【讨论】:

                  【解决方案13】:

                  我只是重新启动终端并再次运行:

                  npm 开始

                  它会再次正常工作

                  (我使用的是 ubuntu 终端)

                  【讨论】:

                    【解决方案14】:

                    在窗户上:

                    1. 以管理员身份运行 cmd(按住 ctl + shift 并单击它 - 或右键单击并选择 Run as Administrator
                    2. 运行以下命令查找进程的PID:
                    netstat -ano|findstr "PID :8081"  // replace 8081 with your in-use port 
                    

                    你会得到如下结果:

                    1. 使用目标 PID 号运行以下命令:
                    // replace 1500 with your target PID
                    
                    taskkill /pid 1500 /f 
                    

                    【讨论】:

                      【解决方案15】:

                      netstat -ano | findstr :5000 然后简单地输入 taskkill /F /PID yourNumber(11076)

                      然后启动,服务器使用: npm run dev

                      【讨论】:

                        猜你喜欢
                        • 2020-11-09
                        • 2020-07-25
                        • 2021-09-14
                        • 2021-02-11
                        • 2020-04-08
                        • 2021-02-26
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        相关资源
                        最近更新 更多