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구 […]

github + ngrok + webhook 으로 편하게 라즈베리파이 코딩하기

라즈베리파이에서 vi editor로 프로그래밍 하는 것은 너무 불편하다. (1)vi나 nano를 쓰는데, 확실히 Sublime Text나 Visual Studio Code보다 불편하다. 그래서 코딩은 데스크탑에서 하고 그걸 라즈베리파이로 옮기는 편이 더 수월하다. 근데 또 (2)자잘한 수정사항이 생길때마다 라즈베리파이로 매번 옮기는것도 귀찮다. 라즈베리파이로 뭘 해보려는 사람들이 공통적으로 느끼는 불편함이 아닐까 싶다. 이런 문제들을 ngrok과 webhook을 통해 해결할 수 있다. (참고로 […]

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 […]