2014-02-27 6 views
7

Koa으로 게임을 시작했지만 코드 변경시 자동으로 응용 프로그램을 다시로드하기위한 적절한 솔루션을 찾을 수 없습니다.Koa 서버를 자동으로 다시로드

나의 이해는 nodemon는 노드 우주에서 선호하는 솔루션이 있다는 것입니다,하지만 난 때문에 (코아에 의해 필수) --harmony 플래그 점점 오류를 해요 :

$ node_modules/.bin/nodemon /path/to/node-unstable/bin/node app.js 
/path/to/node-unstable/bin/node --harmony [email protected] 
        ^^^^^^^ 
SyntaxError: Unexpected identifier 
[nodemon] app crashed - waiting for file changes before starting... 
+1

어때요? "$ node_modules/.bin/nodemon -x"/ path/to/node-unstable/bin/node --harmony "app.js' – bnuhero

+0

고마워, 그게 효과적이다. (처음에는 사용중인 주소에 몇 가지 문제가 있었기 때문에 기존 서버가 먼저 종료되도록 래퍼 스크립트를 작성했습니다.) – AnC

답변

10

node_modules/.bin/nodemon --harmony-generators app.js이 충분해야

+0

그게 제가 가정 했었지만, 저도 같은 구문 오류를줍니다. – AnC

+0

어쩌면 노드 v0.11을 사용하지 않고있는 것일 수도 있습니다. –

+0

v0.11 버전 (의도적으로)이 제 'PATH'에 없기 때문에 제대로 작동하지 않을 수 있습니다. - 'export PATH = "node-unstable/bin : $ PATH". – AnC

1

이 꿀꺽 꿀꺽함 작업의 'execMap'옵션 설정은 나를 위해 작동합니다.

var nodemon = require('gulp-nodemon'); 

gulp.task('serve-dev', function() { 
    var options = { 
     script: './src/server/app.js', 
     execMap: { 
      "js": "node --harmony" 
     }, 
     delayTime: 1, 
     env: { 
      'PORT': port, 
      'NODE_ENV': 'dev' 
     }, 
     watch: ['./src/server/'] 
    }; 

    return nodemon(options); 
}); 

분명히 다른 작업 다른 점은있을 수 있지만, 답안에서 최소한의 것을 볼 수있는 무언가를 배우고있을 때 나는 그걸 귀찮게 여기며 모든 것을 포함 시켰습니다. 내가 "PM2를"당신을 추천하고 싶습니다

3

는 : http://pm2.keymetrics.io/

PM2는 프로세스 관리자입니다. 프로세스를 시작, 중지, 다시 시작 및 삭제할 수 있도록 응용 프로그램 상태를 관리합니다.

당신은 쉽게 입력 (일반적으로 컴퓨터에) PM2를 설치할 수 있습니다 sudo는 NPM 설치 -g PM2 프로세스 충돌 그는 가만히 있으면

코드에서 몇 가지 변화를 볼 때 기본적으로 PM2, 그는 istantly 프로세스를 다시 시작 다시 시작하고 오류가 자세한 내용 .. 기록됩니다 문서 페이지를 살펴 걸릴 : http://pm2.keymetrics.io/docs/usage/cluster-mode/

0

나는 최근 KOA를 사용하여 간단한 웹 API를 작성 완료했습니다, 그리고 코드 변경 후 다시로드 조치로 나는 사용했다 babel-watch

를 사용하는 이점은 이미 환매 특약에 명시되어

당신이 nodemon (또는 이와 유사한 솔루션)와 함께 바벨 노드를 사용하여 피곤합니다. 앞에서 설명한 설정이 너무 나쁜 이유는 바벨 노드 자체의 시작 시간 때문입니다. babel-watch는 "master"프로세스에서 babel을 시작하고 파일 감시자도 시작합니다. 증산은 그 과정에서도 수행됩니다. 파일 감시자 이벤트에서는 순수 노드 프로세스를 생성하고 소스 맵과 함께 상위 프로세스의 이동 된 코드를 전달합니다. 이렇게하면 JS 스크립트/앱을 다시 시작할 때마다 바벨 및 모든 deps로드를 피할 수 있습니다.