web-dev-qa-db-ja.com

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で十分ですか?

142
Blaszard

Express 3.では、通常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.では、すべてのミドルウェアが削除されているため、コアExpressから独立して維持および更新できます(静的ミドルウェアを除く)。したがって、個別に呼び出す必要があります(app.js)。

bin/ディレクトリは、さまざまなスタートアップスクリプトを定義できる場所として機能します。 wwwは、エクスプレスアプリをWebサーバーとして起動する例です。

最終的に、teststop、またはrestartなどのような異なるスクリプトを作成できます。この構造を使用すると、すべてをapp.jsに詰め込むことなく、異なるスタートアップ構成を使用できます。

Expressアプリを開始する正しい方法は次のとおりです。

npm start

Express 4.xアプリをHerokにデプロイするには、これをProcfileに追加します。

web: npm start
118
Andy

Express 3.xのようなNodeアプリは、非標準のスタートアップファイルapp.jsを使用しますが、実行するのは間違ったファイルです。

package.json

   "scripts": {
     "start": "node ./bin/www"
   }

起動コマンドラインを示します。これには、スターターファイルへのパスだけでなく、完全なコマンドラインが含まれている可能性があるため、簡単ではありません。

9
4dgaurav

エクスプレスジェネレーターを使用している場合は、ローカルファイル./binを見るだけで、。/ bin内にwwwファイルがあります。したがって、node ./bin/wwwを実行すると、node.jsはwwwファイルでコードを実行します。派手なものは何もありません。

2
Max Ma

Windowsでは、次のコマンドを使用します。

dEBUG = myapp:*&npm startを設定し、ブラウザに http:// localhost:3000 / を読み込んでアプリにアクセスします。

0
user11059213