Что делает "./ 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 ответа:
на Экспресс 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" }
который указывает на запуск командной строки. Это нетривиально, потому что потенциально содержит полную командную строку, а не только путь к стартовому файлу.