본문 바로가기
Javascript/Node.js

Error: listen EACCES: permission denied 해결하기

by v8rus 2023. 1. 3.
C:\Users\Smart\geoExcel\server>nodemon app
[nodemon] 2.0.7
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node app.js`
body-parser deprecated undefined extended: provide extended option app.js:12:17
node:events:491
      throw er; // Unhandled 'error' event
      ^

Error: listen EACCES: permission denied 0.0.0.0:4000
    at Server.setupListenHandle [as _listen2] (node:net:1415:21)
    at listenInCluster (node:net:1480:12)
    at Server.listen (node:net:1568:7)
    at Function.listen (C:\Users\Smart\geoExcel\server\node_modules\express\lib\application.js:635:24)
    at Object.<anonymous> (C:\Users\Smart\geoExcel\server\app.js:37:20)
    at Module._compile (node:internal/modules/cjs/loader:1126:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
    at Module.load (node:internal/modules/cjs/loader:1004:32)
    at Function.Module._load (node:internal/modules/cjs/loader:839:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
Emitted 'error' event on WebSocketServer instance at:
    at Server.emit (node:events:513:28)
    at emitErrorNT (node:net:1459:8)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  code: 'EACCES',
  errno: -4092,
  syscall: 'listen',
  address: '0.0.0.0',
  port: 4000
}
[nodemon] app crashed - waiting for file changes before starting...

보통 위의 문제는 서버를 두개 이상 실행시킬 경우 포트가 중첩되어서 발생하는 문제이다. 하지만 이번 케이스는 다르다.
다른 포트는 잘 열리는데, 사용중이지 않은 특정 포트가 열리지 않는 문제였다.
다른 포트를 사용하기에는 프론트에서 설정을 바꿔야만 하기에 귀찮아서 해결방법을 찾아봤다.

일단 포트를 사용중인 프로그램 확인을 위해서 윈도우 터미널에서
$ netstat -ano 로 사용중인 포트를 찾아본다. 나오면 해당 프로그램을 종료하면 된다.
하지만 나는 해당 포트를 사용중인 프로그램은 없다. 무려 wsl 에서도 마찬가지로

이 문제의 해결방법은 다음과 같았다.

cmd 를 관리자 권한으로 실행한다.
$ net stop winnat
$ net start winnat

이제 정상적으로 로컬 서버가 잘 작동한다.

댓글