TIL

23.12.19 TIL 채팅방만들기

영우는여전히 2023. 12. 19. 16:10
app.use(express.static(path.join(__dirname, "public")))

 

이렇게 하는 이유 

 

const express = require("express")
const app = express();
const path = require("path")

console.log("🚀 ~ file: app.js:8 ~ __dirname:", __dirname)

 

 

🚀 ~ file: app.js:8 ~ __dirname: /Users/youngwookim/Desktop/code/chat


콘솔찍으면 이렇게 나옴.

 

저게 지금 있는 폴더 경로 나타내줌

 

path.join 은 운영체제마다 슬레쉬 역슬레쉬 그게 달라서 저걸 해주는거임. ************ 알아보기

 

 

 


const express = require("express")
const app = express();
const path = require("path")

console.log("🚀 ~ file: app.js:8 ~ __dirname:", __dirname)


// app.use(express.static(path.join(__dirname, "public")))

const PORT = process.env.PORT || 5000;

app.listen(port, () => console.log(`server is running ${PORT}`))
// app.listen(포트, 명령)

 

웹 서버 열었음.

 

 


포트 이미 열렸다 오류

 

사용중인 포트 찾아서 강종하기

 

Error: listen EADDRINUSE: address already in use :::5000

 

VScode에서 서버를 열었을 때,

하단 패널에서 Debug console 메뉴에 이미

3000, 5000, 5001.. 등 포트를 사용하고 있어 서버 구동이 불가능하다는 메시지가 나옴

이렇듯 필요한 웹 서버 포트를 다른 곳에서 사용하고 있을 때 iterm으로 포트 정보를 찾아준다.

lsof -i:<port-number>

lsof는 list open files의 약자로 시스템에서 열린 파일의 목록을 알려주는 명령어이다.

위에서 확인한 포트 정보중 PID를 사용해 포트를 강제로 종료시킬 수 있다.

kill -g <PID>



아 왜 이러는거야 
node:events:493
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::5000
    at Server.setupListenHandle [as _listen2] (node:net:1872:16)
    at listenInCluster (node:net:1920:12)
    at Server.listen (node:net:2008:7)
    at Function.listen (/Users/youngwookim/Desktop/code/chat/node_modules/express/lib/application.js:635:24)
    at Object.<anonymous> (/Users/youngwookim/Desktop/code/chat/app.js:20:5)
    at Module._compile (node:internal/modules/cjs/loader:1376:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
    at Module.load (node:internal/modules/cjs/loader:1207:32)
    at Module._load (node:internal/modules/cjs/loader:1023:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:135:12)
Emitted 'error' event on Server instance at:
    at emitErrorNT (node:net:1899:8)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  code: 'EADDRINUSE',
  errno: -48,
  syscall: 'listen',
  address: '::',
  port: 5000
}

Node.js v21.1.0

 

 

해결이 되었다.

그냥 포트 번호 바꿈.

왜냐면 이미 내 맥에서 5000포트를 사용 하고 있었음...

지워도 계속 생겨서 어쩔 수 없음.

 


 

server.listen(PORT, () => console.log(`server is running ${PORT}`));
// app.listen(포트, 명령) 형태임. -> app => server로 변경.****************

 

강의가 3년 전 것이라서 app.listen 라고 하면 라이브러리에 오류가 생기는 것 같다.