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


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

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

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

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

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

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

4 114

4 ответа:

на Экспресс 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());

на Экспресс 4.0 однако все промежуточное программное обеспечение было удалено, чтобы их можно было поддерживать и обновлять независимо от core Express( кроме статического промежуточного программного обеспечения), поэтому их нужно вызывать отдельно (что вы смотрите в app.js).

The bin/ каталог служит местом, где вы можете определить свои различные скрипты на www пример как это должно выглядеть. В конечном счете, у вас могут быть сценарии запуска, такие как test,stop или restart и т. д. Наличие этой структуры позволяет иметь различные конфигурации, не касаясь app.js.

правильный способ запуска Экспресс-приложения:

npm start

для развертывания Экспресс-4.x приложение Heroku добавьте это в ваш Procfile:

web: npm start

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

package.json и

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

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

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

поместите это в Procfile web: node ./bin/www и проверьте, если он работает с foreman start. Приложение должно быть доступно на порту 5000