[解決済み] Express 4.x で "./bin/www" は何をするのですか?
質問
Node.jsのアプリでExpress 4.0を学び始めたところ、以下のようなものが生成されることがわかりました。
./bin/www
ファイルには、アプリケーションサーバとポートの設定だけが書かれており、ミドルウェアやルーティングなど、他のすべての設定は
./app.js
ファイルを作成します。
しかし、この
./bin/www
を実行します。私は Express 3.x を使用していますが、サーバーとポートの設定、およびルーティングとミドルウェアは常に同一の
./app.js
ファイルを作成し、nodeアプリを起動する際に
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
は十分ですか?
どのように解決するのですか?
で
エクスプレス3.0
を使用すると、通常は
app.configure()
(または
app.use()
) を使って、必要なミドルウェアを設定してください。指定したミドルウェアは、Express3.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());
で
エクスプレス4.0
しかし、すべてのミドルウェアが削除され、Expressのコアから独立して保守および更新できるようになりました(静的ミドルウェアを除く)。
app.js
).
は、その
bin/
ディレクトリは、さまざまな
起動スクリプト
. その
www
は、expressアプリをWebサーバーとして起動する例です。
最終的には、以下のような異なるスクリプトを用意することができます。
test
,
stop
または
restart
などです。この構造を持つことで、起動時の設定を変えることができ、すべてを
app.js
.
Expressアプリの正しい起動方法です。
npm start
をデプロイするには
エクスプレス4.x
アプリを
Heroku
の場合、これを
Procfile
:
web: npm start
あるいは、スタートスクリプトを
package.json
herokuは自動的にそれを使用します。
ここで
"scripts": {
"start": "node ./bin/www",
}
関連
-
vueはopenlayersを使用してスカイマップとガオードマップをロードする
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] javascript:void(0)」とは何ですか?
-
[解決済み] Node.jsのデプロイメント設定/構成ファイルを保存する方法は?
-
[解決済み】JavaScript版sleep()とは?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
親子コンポーネント通信を解決する3つのVueスロット
-
vueのグローバルがscss(mixin)を導入。
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
[解決済み】Node.jsで "Cannot find module "エラーを解決するには?
-
[解決済み】TypeError: Router.use() はミドルウェアの関数を要求しているが、Object を取得した。
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
[解決済み】React - TypeError: 未定義のプロパティ 'props' を読み取ることができない。
-
[解決済み】 `string.split is not a function` というエラーの原因は何ですか?
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules
-
jq は html ページとデータを動的に分割する。