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
파일이 더 이상 자체적으로 시작되지 않는 이유를 이해할 수 있습니다.