Express 4.x에서 "./bin/www"의 기능은 무엇입니까?
방금 제 Node.js 앱에서 Express 4.0에 대해 배우기 시작했고, 그것이 생성되는 것을 발견했습니다../bin/www
파일, 오직 애플리케이션 서버와 포트 설정만이 기록되어 있고 미들웨어와 라우팅과 같은 다른 모든 것들이 정의되어 있습니다../app.js
일.
하지만 이게 뭔지는 잘 모르겠습니다../bin/www
서버 및 및 다에 했습니다. 저는 Express 3.x를 사용해왔고 서버 및 포트 설정과 라우팅 및 미들웨어 설정을 동일하게 정의했습니다../app.js
파일을 작성하고, 내 노드 앱을 시작했습니다.node app.js
. 그래서 그걸 사용하면 무슨 소용이 있겠습니까?./bin/www
및 서버와 포트 정의만 다른 것과 분리할 수 있습니까?
지금, express-generator 를 사용하여 패키지를 만들 때,package.json
는 다음 정의를 포함합니다.
"scripts": {
"start": "node ./bin/www"
}
하지만 나는 내가 앱을 실행해야 하는지 궁금합니다.node ./bin/www
, 아니면npm start
앱을 시작하려면 어떤 명령을 실행해야 합니까?
그리고 heroku에 앱을 배포할 때는 무엇을 적어야 할까요?Procfile
파일이요?web: node app.js
충분합니까?
Express 3.0에서는 일반적으로app.configure()
(또는app.use()
필요한 미들웨어를 설정합니다.지정한 미들웨어는 Express 3.0과 함께 번들로 제공됩니다.
예:
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.compress());
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
그러나 Express 4.0에서는 모든 미들웨어가 제거되어 핵심 Express(정적 미들웨어 제외)와 독립적으로 유지 및 업데이트할 수 있으므로 별도로 호출해야 합니다.app.js
).
bin/
디렉토리는 당신이 당신의 다양한 시작 스크립트를 정의할 수 있는 장소의 역할을 합니다.www
는 express 앱을 웹 서버로 시작하는 예입니다.
궁극적으로는 다음과 같은 다른 스크립트를 가질 수 있습니다.test
,stop
, 아니면restart
, 등. 이러한 구조를 가지면 모든 것을 주입하지 않고도 다양한 스타트업 구성을 가질 수 있습니다.app.js
.
Express 앱을 시작하는 올바른 방법은 다음과 같습니다.
npm start
Heroku에 Express 4.x 앱을 배포하려면 이 앱을 당신의Procfile
:
web: npm start
아니면 그냥 시작 스크립트를 사용할 수 있다면.package.json
, heroku는 자동으로 그것을 사용할 것입니다. 여기서 더 읽어보세요.
"scripts": {
"start": "node ./bin/www",
}
Express 3.x와 같은 노드 앱은 표준이 아닌 시작 파일을 사용합니다.app.js
, 하지만 실행하기에는 잘못된 파일입니다.
package.json
가지다
"scripts": {
"start": "node ./bin/www"
}
시작 명령줄을 나타냅니다.단순한 시작 파일 경로가 아니라 전체 명령줄을 포함할 수도 있기 때문에 중요하지 않습니다.
이상의 내용은 모두 잘 답변하였습니다.하지만 만일 당신이 사용하고 싶다면.node app.js
Express 3.* 버전과 다를 수 없습니다.다음을 수행할 수 있습니다.
Express 4 생성기에서 생성된 app.js 파일이 이제 Node.js 모듈이므로(코드를 수정하지 않는 한) 더 이상 앱으로 독립적으로 시작할 수 없습니다.모듈을 Node.js 파일에 로드하고 Node.js 파일을 통해 시작해야 합니다.이 경우 Node.js 파일은 ./bin/www입니다.자세한 내용은 공식 문서를 참조하십시오.
Express 앱을 만들거나 앱을 시작할 때 bin 디렉토리나 확장자가 없는 www 파일은 필수 사항이 아닙니다.발전기에서 제안한 것일 뿐이니, 필요에 따라 자유롭게 수정하세요.
www 디렉토리를 제거하고 "Express 3 way"로 유지하려면 module. exports = app; app.js 파일 끝에 다음 코드를 붙여넣습니다.
app.set('port', process.env.PORT || 3000)
app.listen(app.get('port'), () => {
console.log(`Express server listening on port ${app.get('port')}`);
})
다음은 바꿉니다."start": "node ./bin/www"
꾸러미 안에json 파일.그 이후로 ./bin/www의 기능을 app.js로 다시 이동했습니다.이제 사용을 시작합니다."start": "node app.js"
고속 앱을 실행할 수 있습니다.
express- generator를 사용하는 경우 로컬 파일을 보십시오.www
파일 안에 파일을 저장합니다../bin
. 그래서 당신이 뛸 때는node ./bin/www
, node.js가 코드를 실행합니다.www
파일. 화려한 건 없습니다.
express 문서에서 다음을(를)
[...] 앱을 시작하는 실제 명령은
node ./bin/www
[익스프레스 4], 예전에는node app.js
급행 3번에서왜냐하면.app.js
Express 4 생성기에서 생성된 파일은 이제 Node.js 모듈이므로(코드를 수정하지 않는 한) 앱으로 독립적으로 시작할 수 없습니다.모듈을 Node.js 파일에 로드하고 Node.js 파일을 통해 시작해야 합니다.Node.js 파일은./bin/www
이 경우에는
이 내용을 Procfile에 저장합니다.web: node ./bin/www
그리고 그것이 작동하는지 확인합니다.foreman start
. 포트 5000에서 앱을 사용할 수 있어야 합니다.
Windows에서는 다음 명령을 사용합니다.
dEBUG=myapp:* & npm start 그런 다음 브라우저에 http://localhost:3000/를 로드하여 앱에 액세스합니다.
언급URL : https://stackoverflow.com/questions/23169941/what-does-bin-www-do-in-express-4-x
'programing' 카테고리의 다른 글
클라이언트에서 포스트백 확인클릭 버튼 ASP.NET (0) | 2023.10.21 |
---|---|
MaxUploadSize 처리 방법초과됨예외. (0) | 2023.10.21 |
WordPress에서 작동하지 않는 태그 (0) | 2023.10.21 |
Git과 SSH, 어떤 키가 사용됩니까? (0) | 2023.10.21 |
폴리머 1.0과 앵글 1.x 혼합 (0) | 2023.10.21 |