错误:监听 EADDRINUSE:地址已在使用 3000;

dev*_*_el 5 node.js express dotenv

.env我的根目录中有一个文件,PORT = 3000;里面有

在我的中app.js,我使用 .env 文件来监听端口 3000

require('dotenv').config();

const express = require('express');
const app = express();
const port = process.env.PORT || 4000;

app.get('/', (req, res) => {
  res.send('Hello World!!!');
});

app.listen(port, () => console.log(`Example app listening on port ${port}!`));
Run Code Online (Sandbox Code Playgroud)

尝试运行该文件后,出现以下错误

错误:监听 EADDRINUSE:地址已在使用 3000;

我使用的是 Mac,所以我尝试sudo lsof -i :3000在终端中使用,并被要求输入密码。

我输入密码并按 Enter 键,但没有任何反应。

我怎样才能消除错误?我相信我的密码是正确的。我今天确实获得了 Mac 操作系统的重大更新——这会导致一些与密码相关的问题吗?

小智 10

我在Windows上使用以下命令修复了此错误

netstat -ano | findstr :3000. 
Run Code Online (Sandbox Code Playgroud)

输入上面的命令后,您将获得以下 TCP 地址:

  TCP    0.0.0.0:3000           0.0.0.0:0              LISTENING       12356
  TCP    [::]:3000              [::]:0                 LISTENING       12356
Run Code Online (Sandbox Code Playgroud)

然后运行:

taskkill /PID 12356 /F
Run Code Online (Sandbox Code Playgroud)

例如:

C:\Users\Desktop\nodejs>netstat -ano | findstr :3000

  TCP    0.0.0.0:3000           0.0.0.0:0              LISTENING       12356
  TCP    [::]:3000              [::]:0                 LISTENING       12356

C:\Users\Desktop\nodejs>taskkill /PID 12356 /F

SUCCESS: The process with PID 12356 has been terminated.
Run Code Online (Sandbox Code Playgroud)


dev*_*_el 2

将文件更改app.js

const express = require('express');
const app = express();
const port = process.env.PORT || 3000;

require('dotenv').config();

app.get('/', (req, res) => {
  res.send('Hello World!!!');
});

app.listen(port, () => console.log(`Example app listening on port ${port}!`));
Run Code Online (Sandbox Code Playgroud)

解决了问题,但PORT没有.env被阅读......