我已经在一个node.js项目上工作了几个星期,它一直工作得很好。通常,我使用npm start来运行我的应用程序,并在localhost上的浏览器中查看它,端口3000。

今天,我在使用npm start时开始得到以下错误:

Server started on port 3000                                                                                                                                                                                         
Port 3000 is already in use 

我已经检查了资源监视器,我没有在端口3000上运行其他进程。我为什么会得到这个错误消息?

在我的app.js中,我有以下代码来设置端口…这是错误的吗?它以前工作得很好,所以我不确定我做错了什么。

// Set Port
app.set('port', (process.env.PORT || 3000));
app.listen(app.get('port'), function() {
    console.log('Server started on port '+app.get('port'));
});

谢谢你的帮助!


编辑:

我已经尝试运行netstat和TCPView来检查哪个进程正在使用该端口,但是没有使用该端口。我也尝试重新启动我的笔记本电脑,但我仍然得到同样的错误。


当前回答

我在这里做了所有的事,但都没用。当我检查端口时,没有显示任何进程。最终成功的是《NoMachine》。我把这个留在这里,希望能有所帮助。

其他回答

我花了2个小时来找出为什么EADDRINUSE不允许我sart一个应用程序(其他node-express服务器是可以的)…它在添加后开始工作 lazyConnect:没错, 到数据源配置。

别问我为什么有用。我不知道。我把这个信息放在这里,只是为了给有同样问题的人。

在包中。Json脚本包括:

"start": "nodemon app.js --delay 1500ms"

我相信对我来说,问题是旧端口没有被nodemon及时关闭重新启动。我在使用multer时遇到了这个问题。

你可以使用kill-port。首先,关闭现有端口,然后创建服务器并监听。

const kill = require('kill-port')

kill(port, 'tcp')
    .then((d) => {
        /**
     * Create HTTP server.
     */
        server = http.createServer(app);

        server.listen(port, () => {
            console.log(`api running on port:${port}`);
        });
    })
    .catch((e) => {
        console.error(e);
    }) 

如果你在同一个端口上多次调用app.listen函数,你会得到这个错误。

你可以检查任何循环的代码

对于windows用户,只需简单地停止任务中的所有Node.js进程 经理

希望对大家有所帮助