Я только начал узнавать о 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
достаточно?
источник
Ответы:
В Express 3.0 вы обычно используете
app.configure()
(илиapp.use()
) для установки необходимого промежуточного программного обеспечения. Указанное вами промежуточное ПО поставляется вместе с Express 3.0.Пример:
В Express 4.0, однако, все промежуточное программное обеспечение было удалено, чтобы его можно было поддерживать и обновлять независимо от ядра Express (кроме статического промежуточного программного обеспечения), поэтому их необходимо вызывать отдельно (как вы видите
app.js
).bin/
Каталог служит в качестве места , где вы можете определить ваши различные сценарии запуска .www
Является примером для запуска экспресс - приложение в качестве веб - сервера.В конечном счете, у вас могут быть разные сценарии, такие как
test
,stop
илиrestart
, и т. Д. Наличие этой структуры позволяет вам иметь разные конфигурации запуска, не втискивая все в нихapp.js
.Правильный способ запустить приложение Express:
Чтобы развернуть приложение Express 4.x в Heroku , добавьте его в
Procfile
:Или, если вы можете просто использовать стартовый скрипт в вашем
package.json
, heroku будет автоматически использовать это, подробнее здесьисточник
www
. Я не уверен, почему он так назван - может быть, назван в честь Всемирной паутины?Нодовые приложения, такие как Express 3.x, используют нестандартные загрузочные файлы
app.js
, но это не тот файл, который нужно запустить.package.json
имееткоторый заявляет командную строку запуска. Это нетривиально, потому что потенциально содержит полную командную строку, а не просто путь к начальному файлу.
источник
Если вы используете экспресс-генератор, просто посмотрите на ваш локальный файл, внутри ./bin
./bin
естьwww
файл. Поэтому, когда вы запуститеnode ./bin/www
, node.js выполнит код вwww
файле. Ничего особенного.источник
В Windows используйте эту команду:
источник
На все вышеизложенное ответили хорошо. Но в случае, если вы хотите использовать
node app.js
только версии Express 3. *. Вы можете следовать ниже:Поскольку файл app.js, сгенерированный генератором Express 4, теперь является модулем Node.js , он больше не может запускаться независимо как приложение (если вы не измените код). Модуль должен быть загружен в файл Node.js и запущен через файл Node.js. В этом случае файл Node.js - это ./bin/www. Для получения дополнительной информации посетите официальную документацию .
Ни каталог bin, ни файл www без расширений не являются обязательными для создания приложения Express или запуска приложения. Это всего лишь предложения, сделанные генератором, поэтому не стесняйтесь изменять их в соответствии с вашими потребностями.
Чтобы избавиться от каталога www и сохранить «экспресс 3 пути», удалите строку с именем module.exports = app; в конце файла app.js вставьте на его место следующий код:
Далее, изменение
"start": "node ./bin/www"
в package.json файле. С тех пор вы переместили функциональность ./bin/www обратно в app.js. Теперь начните использовать"start": "node app.js"
для запуска вашего экспресс-приложения.источник
поместите это в Procfile
web: node ./bin/www
и проверьте, работает ли онforeman start
. Приложение должно быть доступно на порту 5000источник