it-roy-ru.com

Что делает "./bin/www" в Express 4.x?

Я только начал узнавать о Express 4.0 в своем приложении Node.js. Я обнаружил, что он сгенерировал файл ./bin/www, в котором записаны только настройки сервера приложений и портов, а все остальные, такие как промежуточное ПО и маршрутизация, определены в файле ./app.js.

Однако я не уверен, что делает этот ./bin/www. Я использовал Express 3.x и всегда определял параметры сервера и порта, а также маршрутизацию и промежуточное ПО в одном и том же файле ./app.js, и запускал приложение для моего узла с помощью node app.js. Так какой смысл использовать ./bin/www? Разделяет ли он только сервер и определение порта от других?

Прямо сейчас, когда я создаю пакет с помощью экспресс-генератора, package.json включает следующее определение:

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

Однако мне интересно, должен ли я запускать свое приложение, используя node ./bin/www или npm start. Какую команду запустить, чтобы запустить мое приложение?

А также, когда я развертываю свое приложение на heroku, что я должен написать в файле Procfile? Достаточно ли web: node app.js?

127
Blaszard

В 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 является примером того, как он должен выглядеть. В конечном итоге вы можете иметь сценарии запуска, такие как test, stop или restart и т.д. Наличие этой структуры позволяет вам иметь различные конфигурации, не касаясь app.js.

Правильный способ запустить приложение Express: 

npm start

Чтобы развернуть Express 4.x приложение в Heroku , добавьте это в свою Procfile

web: npm start
103
Andy

Нодовые приложения, такие как Express 3.x, используют нестандартные загрузочные файлы app.js, но это не тот файл, который нужно запустить. 

package.json имеет

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

который заявляет командную строку запуска. Это нетривиально, потому что потенциально содержит полную командную строку, а не просто путь к начальному файлу.

7
4dgaurav

если вы используете экспресс-генератор, просто посмотрите на локальный файл ./bin, внутри ./bin есть файл www. Поэтому, когда вы запускаете node ./bin/www, node.js выполнит код в файле www. Ничего фантастического.

1
Max Ma

В Windows используйте эту команду:

set DEBUG = myapp: * & npm start Затем загрузите http: // localhost: 3000/ в браузер, чтобы получить доступ к приложению.

0
user11059213