파일을 변경하면 노드를 다시 시작하십시오.


172

PHP 백그라운드에서 오는 사람에게는 모든 코드 변경 후에 노드를 종료하고 다시 시작하는 프로세스가 매우 지루한 것 같습니다. 코드 변경이 저장 될 때 노드를 자동으로 다시 시작하기 위해 node로 스크립트를 시작할 때 플래그가 있습니까?

답변:


94

forever 모듈 에는 다중 node.js 서버라는 개념이 있으며 현재 실행중인 서버를 시작, 재시작, 중지 및 나열 할 수 있습니다. 또한 파일 변경을 감시하고 필요에 따라 노드를 다시 시작할 수 있습니다.

아직 설치하지 않은 경우 설치하십시오.

npm install forever -g

설치 한 후 다음 forever명령을 호출하십시오 . -w플래그를 사용하여 파일이 변경되었는지 감시하십시오.

forever -w ./my-script.js

또한 디렉토리를보고 패턴을 무시할 수 있습니다.

forever --watch --watchDirectory ./path/to/dir --watchIgnore *.log ./start/file

+1은 개발 / 테스트 및 프로덕션 모두에 매우 유용합니다.
— smertrios

1
나는이 명령으로 ES2015 Expess.js / Webpack 서버를 다시 시작하기 위해 영원히 사용하려고 시도 forever -c babel-node -w --watchDirectory ./server ./server/index.js 했지만 슬프게도 꼬리 핀으로 영원히 보내는 것처럼 보이고 서버를 너무 자주 다시 시작하여 이미 사용 오류가 발생합니다 ... 어쨌든 다시 시작한 후 일시 중지를 추가 하시겠습니까?
— 브라이언 디 팔마

1
@BrianDiPalma watch 디렉토리 아래에 로그와 같은 변경 파일이있는 경우 무시 패턴을 추가해야합니다. 문서를 확인하여 재시작 사이의 지연을 정의 할 수 있는지 확인하십시오.
— hyde dec

1
@hyde 지연이 아니었기 때문에 필요한 -t또는 killTree옵션이었습니다. babel-node가 종료되었지만 생성 된 Express 서버는 아닌 것 같습니다.
— 브라이언 디 팔마

2
영원히 JS에는 스크립트가 종료 될 때 노드 프로세스를 종료시키지 않는 버그가 Windows에 있습니다. 노드 프로세스를 수동으로 종료해야합니다. ( stackoverflow.com/questions/14556852/…
— pmont

157

좋은 옵션은 Node-supervisor 이고 파일 변경시 Node.js 다시 시작 은이를 사용하는 방법에 대한 좋은 기사입니다.

 npm install supervisor -g

응용 프로그램의 루트로 마이그레이션 한 후 다음을 사용하십시오.

 supervisor app.js

아무런 문제없이 nodemon을 사용했기 때문에 어떤 이유로 든 여기에서 동일합니다.
— ZenMaster

1
나도 일했다. server.js지속적으로 다시 시작했기 때문에 기본 와일드 카드 감시 매개 변수를 재정의해야했습니다. 이는 서버가 부팅시 클라이언트를 빌드하고 파일을 변경했기 때문입니다. supervisor --watch server.js server.js그것을 해결했다.
— scipilot

2
노드 감독자는 더 이상 유지 관리되지 않습니다.
— aleung

매력처럼 작동합니다!
— JRichardsz

내가 가장 좋아하는 파일은 파일이 수정되었는지 확인하는 새로 고침 간격입니다.
— NiCk Newman

100

nodemon 과 같은 것을 보아야 합니다.

Nodemon은 nodemon이 시작된 디렉토리의 파일을보고 변경되면 노드 응용 프로그램을 자동으로 다시 시작합니다.

예:

nodemon ./server.js localhost 8080

또는 단순히

nodemon server

코드 변경을 구현하기 위해 Node를 다시 시작해야하는 이유가 있습니까? 그리고 왜 다른 서버 (Apache / PHP와 같은)가 재시작이 필요하지 않습니까?
— maverick

2
이 경우 PHP 스크립트는 들어오는 모든 요청에 ​​대해 시작되고 페이지 생성이 완료된 후 중지되므로 @ dk49입니다.
— Daerdemandt

@Daerdemandt 공유해 주셔서 감사합니다 ..하지만 여전히 서버 (어떤 플랫폼에서)를 시작하고 중지해야합니까? 파일 캐시를 유지 관리하기 때문입니까 (응답)? 요청시 서버가 디스크에서 파일을로드하고 처리 한 다음 응답을 보낼 것이라고 생각했습니다. 서버 쪽 프로그래밍을 처음 사용합니다.
— maverick

프로덕션 환경에서 nodemon을 사용할 수 있습니까?
— JoeTidee

1
nodemon이 현재 어떻게 유지되는지 확실하지 않지만 (2012 년에 다시 시작 되었음) 보안상의 이유로 파일이 변경 될 때마다 서버가 prod에서 다시 시작되기를 확신하지 않습니다. pm2와 같은 것이 프로덕션 환경에 더 적합 할 수 있습니다.
— Menztrual

43

이 작업을 쉽게하기 위해 다양한 NPM 패키지가 제공됩니다.

개발

  • nodemon : 가장 인기 있고 적극적으로 유지
  • 영원히 : 두 번째로 인기있는
  • node-dev : 2019 년 5 월부터 커밋 없음
  • 감독자 :-더 이상 유지되지 않습니다

프로덕션 용 (클러스터링, 원격 배포 등의 확장 된 기능 사용)

Forever, pm2 및 StrongLoop 비교는 StrongLoop 웹 사이트 에서 찾을 수 있습니다 .


3
@ 2019 nodemon은 여전히 ​​유지되고있는 4 가지 개발 옵션 중 유일한 것 같습니다.
— mvermand

1
@mvermand 네, nodemon을 제외하고는 최근에 릴리스 된 것이 없습니다. 생산을 위해 PM2는 여전히 잘 유지됩니다.
— Kay

16

nodemon 을 사용해 볼 수도 있습니다

Nodemon을 설치하려면

npm install -g nodemon

Nodemon을 사용하려면

일반적으로 다음과 같은 노드 프로그램을 시작합니다.

node server.js

그러나 여기서는 다음과 같이해야합니다.

nodemon server.js

좋고 간단한 aswer !!
— lesimoes

1
nodemon에는 성가신 버그가 있습니다. 나를 위해 시간 낭비했다.
— kta


9

node-dev

node-dev는 서버 가 다시 시작될 때마다 또는 파일에 오류나 변경 이있을 때 데스크탑에서 growl (또는 libnotify) 알림을 받고자하는 개발자에게 nodemon과 supervisor의 훌륭한 대안 입니다.

설치:

npm install -g node-dev

node 대신 node-dev를 사용하십시오.

node-dev app.js

서버가 자동으로 시작되도록 파일 변경 알림

여기에 이미지 설명을 입력하십시오

콘솔을 넣어

여기에 이미지 설명을 입력하십시오


3

나는 다음 runjs과 같이 사용 한다 :

runjs example.js

패키지는 그냥 호출 run

npm install -g run

2
그것은, 아니 더 나은 또 다른 옵션들
— sp2danny

이 설명 경우 대답은 훨씬 더 가치가있을 것입니다 왜 사용 run하고, 기존의 대안 방법을 비교했다. 다른 옵션을 버리는 것만으로도 역설의 선택에 기여합니다. (다행히도 run2015 년 이후로 업데이트되지 않았으므로 이제는 별다른 옵션이 없습니다.)
— Dan Dascalescu

0

다음 단계를 수행하십시오.

  1. npm install --save-dev nodemon

  2. package.json의 "script"섹션에 다음 두 줄을 추가하십시오.

"start": "node ./bin/www",
"devstart": "nodemon ./bin/www"

아래 그림과 같이:

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node ./bin/www",
    "devstart": "nodemon ./bin/www"
}
  1. npm run devstart

https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/skeleton_website


글쎄, 그것은 본질적으로 2012 년 답변과 동일 하지만 주변에 더 많은 "마법"이 있습니다. 그러나 답 의 본질 은 "use nodemon"입니다. 재설정은 접선입니다. 형식이 잘못되었지만 David가이를 수정 한 것으로 보이므로 다운 보트를 취소합니다.
— Dan Dascalescu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.