programing

Express 4.x에서 "./bin/www"의 기능은 무엇입니까?

newstyles 2023. 10. 21. 10:03

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

HerokuExpress 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.jsExpress 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.jsExpress 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