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