运行H5项目时报错:
Error: listen EADDRINUSE: address already in use :::4000(你的端口)

此时必须kill掉被占用的端口,才能继续运行项目。

报错日志

C02Z84E5LVCF:mmdemo maomao$ npm run dev

> mmdemo@1.0.0 dev /Users/maomao/Documents/demo/pc/mmdemo
> webpack server --open

/Users/maomao/Documents/demo/pc/mmdemo/node_modules/webpack-dev-server/lib/Server.js:1584
      throw error;
      ^

Error: listen EADDRINUSE: address already in use :::4000
    at Server.setupListenHandle [as _listen2] (net.js:1298:14)
    at listenInCluster (net.js:1346:12)
    at Server.listen (net.js:1434:7)
    at READ_WRITE (/Users/maomao/Documents/demo/pc/mmdemo/node_modules/webpack-dev-server/lib/Server.js:2134:19)
    at new Promise (<anonymous>)
    at Server.start (/Users/maomao/Documents/demo/pc/mmdemo/node_modules/webpack-dev-server/lib/Server.js:2133:11)
    at async Command.<anonymous> (/Users/maomao/Documents/demo/pc/mmdemo/node_modules/@webpack-cli/serve/lib/index.js:244:25)
    at async Promise.all (index 1)
    at async Command.<anonymous> (/Users/maomao/Documents/demo/pc/mmdemo/node_modules/webpack-cli/lib/webpack-cli.js:1516:13) {
  code: 'EADDRINUSE',
  errno: 'EADDRINUSE',
  syscall: 'listen',
  address: '::',
  port: 4000
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! mmdemo@1.0.0 dev: `webpack server --open`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the mmdemo@1.0.0 dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/maomao/.npm/_logs/2021-12-23T06_19_39_606Z-debug.log

解决方案

1.查看端口所在进程

命令行输入:

lsof -i:4000
C02Z84E5LVCF:mmdemo maomao$ lsof -i:4000
COMMAND    PID        USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
Google    3802 maolijun298  226u  IPv6 0xb77e5e4617176d37      0t0  TCP localhost:60403->localhost:terabase (ESTABLISHED)
node      9975 maolijun298   23u  IPv6 0xb77e5e460470c1f7      0t0  TCP *:terabase (LISTEN)
node      9975 maolijun298   44u  IPv6 0xb77e5e461717b6b7      0t0  TCP localhost:terabase->localhost:60403 (ESTABLISHED)

可以看到端口所在的进程是:9975

2.清除端口所在进程

命令行输入:

kill -9 9975

可以再次运行lsof -i:4000检查进程是否存在,如果不存在,就可以重新运行项目了。

祝你成功!