Starting inspector on 127.0.0.1:5858 failed: address already in use

문제상황 노드서버를 돌렸다. 문제가 없었다. 근데 또 노드 서버를 돌렸다…근데 위와같은 에러메시지를 만났다. 해결방법 Visual Studio Code 재시작 Visual Studio Code 를 껏다 켰더니 문제가 해결되었다. node process를 죽인다 sudo kill -9 node 를 했더니 해결이 되었다.

Command ‘node’ not found

분명히 공식사이트에서 노드를 잘 설치했는데, 막상 terminal에서 node -v를 치니 그런 프로그램 없다고 나온다. 반면, node프로그램을 직접 실행해서 console.log(“Hello”) 라고 하면 또 작동은 잘 된다. 뭐가 문제일까? 환경변수 검색창에 sysdm.cpl ,3를 입력하면 아래와 같이 환경변수를 설정하는 창이 뜬다. 여기서 환경변수를 누르면 아래와 같이 나온다. 이제 환경변수 Path에다가 node.exe파일의 경로를 입력해 주면 된다. 이렇게 하면 된다. […]

Booting시에 Node서버가 자동으로 실행되도록 하기

pm2설치 node서버를 관리해주는 pm2라는 노드 모듈을 설치해준다. 이제 내 index.js를 pm2로 돌린다. 잘 돌아가고 있는지 보려면 pm2 ls라고 치면 된다. 그리고, 이 상태(?)를 저장한다. 그리고 pm2 startup 이라고 치면 아래와 같이 나온다. sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u username –hp /home/username 맨 아래줄에 나오는 저거를 복사해서 터미널에 그냥 치면 된다(어디 다른 파일에 넣는게 아니다, […]

Node.js + 라즈베리파이로 원격 모터 제어하기

구글링해보면 라즈베리파이로 모터제어하는 글보다 아두이노로 하는게 많고, 라즈베리파이로 한다치다손 파이썬을 쓰는 경우가 많다. 하지만 나는 Node.js + Ra-Pi가 좋아서 이 조합으로 모터제어를 하였다. 목차 준비물 Node.js 설치 ngrok L298n 분석 배선 모터 제어 원격 제어 준비물 라즈베리파이3 B+ (너무 옛날것만 아니면 다른 모델도 가능할것 같다) DC모터 모터 드라이버 – L298n 건전지 홀더 – AA건전지 4구 […]

static folder 설정과 router 순서

이렇게 코드를 작성하면 브라우저에서 localhost:8080/admin이라고 했을때 저 app.get(‘/admin’) router는 작동하지 않고, 서버의 public/admin/index.html파일만 보내질 뿐이다. 반대로, app.use(express.static(‘public’))를 뒤에 쓰면 router가 잘 동작한다. 먼저 써주는게 우선순위를 갖는다. 조심해야겠다. 참고 : node.js app.get not being called

Terminal에서 node index.js를 치면 무슨일이 일어날까?

index.js 파일안에 내가 쓴 javascript코드는 잘 실행되는데, 조금 더 큰 그림을 보고 싶었다. 그래서 nodejs 소스코드를 다운받아서 중요한것 같은 부분만 읽보고 실행 순서를 추측해 보았다. 심플하게 정리 node index.js → main()함수 실행 Global Module( console.log , timer 등등의 기본 모듈) 로드 내 index.js 로드 및 실행 event-loop 실행 실제 코드 아래는 꼬리에 꼬리를 물듯이 node.js 안에서의 함수 […]

Blocking vs Non-Blocking

사전지식 I/O관련 작업은 OS와 I/O Device가 알아서 처리를 해주기 때문에, CPU가 할일이 별로 없다 Blocking Javascript코드를 한줄 한줄 실행하다가, I/O관련 작업이나 네트워크 통신을 하는 코드를 CPU(NodeJS의 single-thread에 할당된 CPU자원)가 만났을때, OS에게 그 일을 맡긴다. 그리고 CPU는 잠시 일을 쉬면서 결과를 기다린다. 그러다가 OS로 부터 일이 끝났다는 신호를 받으면, 바로 다음 Javascript코드를 한줄씩 읽기 시작한다. 이때 […]

Node.js는 single-thread가 아니다

결론 기본적으로 NodeJS는 event loop를 돌리는데 하나의 thread를 사용한다. 여기서 내 js code(callback function)가 실행된다. 그러나, CPU를 많이 사용해야 하는 일들을 이 main thread에서 처리할 수 는 없다. 그렇게 하면 다른 일을 못하고 서버가 엄청 느려질것이기 때문이다. 그래서 nodejs는 기본적으로 CPU Intensive한 작업들은 다른 thread에서 처리한다. 설명 crypto는 다른 thread에서 실행된다 nodejs module중에 암호생성과 관련된 crypto라는 […]

Event-Loop Part 2 : setTimeout() vs setImmediate() vs process.nextTick()

들어가기에 앞서 이전글 : Event-Loop Part 1 : Big Picture 이 글은 setTimeout(), setImmediate(), process.nextTick() 으로 설정한 callback function이 어떤 순서로 실행되는지에 대한 설명입니다. 추가적인 그림 이전에 위와 같은 그림을 그렸었는데, 이전글과 이번글을 쓰는데 상당히 많이 참조한 이 글에 나오는 아래 그림을 바탕으로 설명하겠습니다(소스코드도 많이 가져다 썼습니다). 4. 이 글에서 setTimeout()는 setTimeout 함수 자체를 의미하고, setTimeout(cb)는 setTimeout()에서 설정한 callback […]

Event-Loop Part 1 : Big Picture

사전지식 Process & Thread process와 thread에 대한 정리 Process Management (Processes and Threads) I/O Device Basics of OS (I/O Structure) I/O Systems in Operating Systems | Device Drivers | interrupt Polling 심플한 결론 내 index.js를 읽고 실행한다 내 코드를 읽으면서 파일 읽기/쓰기 네트워크 통신 관련 작업은 OS나 libuv에게 맡긴다(일이 끝나면, 내가 설정해 놓은 callback function이 실행되거나 event-queue에 […]