express 4버전으로 프로젝트를 생성하니 기존에 앱을 실행하던 node app.js 명령어가 먹히지 않았다.

찾아보니 express3 에서 4로 버전업하면서 package.json 에 정의하던 시작 스크립트가 node ./bin/www 로 변경되었다고 한다.


따라서 기존처럼 node app.js 로 실행하도록 설정을 바꾸어보았다.



1. express 4 설치 

$ npm install -g express-generator


2. 프로젝트 생성

$ express nodejsproject       // 이전버전과 동일


3. package.json 시작 스크립트 수정


{

  "name": "nodejsproject",

  "version": "0.0.0",

  "private": true,

  "scripts": {

    "start": "node app.js"    -- 기존: node ./bin/www  

  },

  "dependencies": {

    "cookie-parser": "~1.4.3",

    "debug": "~2.6.9",

    "ejs": "^2.6.1",

    "express": "~4.16.0",

    "http-errors": "~1.6.2",

    "jade": "~1.11.0",

    "morgan": "~1.9.0"

  }

}


4. app.js 스크립트 수정


상단에 debug 변수 정의

var debug = require('debug')('nodejsproject');


하단에 module.exports 주석처리 하고 소스 추가

//module.exports = app;


app.set('port', process.env.PORT || 3000);


var server = app.listen(app.get('port'), function() {

  debug('Express server listening on port ' + server.address().port);

});




*설정을 변경하여 이전처럼 실행이 가능해졌다! 근데.. 이 방법을 권장하진 않는다고해서 /bin/www 파일과 구조를 살펴본 후에 다시 롤백하려고한다.


[ 참고글 발췌 ]

이제 ./bin/www의 기능이 다시 app.js로 이전되었습니다. 이러한 변경은 권장되지 않지만, 이러한 연습을 통해 ./bin/www 파일의 작동 원리를 이해하고 app.js 파일이 더 이상 자체적으로 시작되지 않는 이유를 이해할 수 있습니다.




참고글 : https://expressjs.com/ko/guide/migrating-4.html

+ Recent posts