По умолчанию Node.js + Express.js не запускается

Я пытаюсь научиться создавать веб-приложения с nodejs и expressjs, следуя руководству по началу работы, найденному на веб-сайте expressjs, под заголовком Использование выражения (1) для создания приложения.

Я сгенерировал приложение, используя плагин express-generator, запустил npm install, а затем попытался запустить приложение с помощью node app (я также пробовал node app.js для хорошей меры. При запуске любой из этих команд там не выводит на терминал вообще.

Я также попытался отладить приложение с помощью node debug app со следующими результатами:

< debugger listening on port 5858
connecting... ok
break in app.js:1
  1 var express = require('express');
  2 var http = require('http');
  3 var path = require('path');
debug> cont
program terminated
debug> cont
App isn't running... Try `run` instead
debug> 

Я нашел файл bin/www, который, казалось, содержал код для запуска сервера, и, конечно же, запуск node bin/www преуспел в запуске приложения.

Что мне здесь не хватает?

Ответы

Ответ 1

Похоже, что способ запуска приложения изменился. Вместо node app вы должны сделать

npm start

Подробнее здесь https://github.com/expressjs/generator

Ответ 2

Некоторые приложения node.js могут пытаться демонтировать или форк самостоятельно при запуске.

Например, haraka использует npm daemon. Чтобы избежать выхода из исходного процесса, вам обычно нужно отключить режим демона в приложении или попытаться использовать отладчик repl для обхода части кода, который демонизирует.

Например, при haraka установите точку останова здесь:

server.js:

  53 Server.daemonize = function () {
->54     var c = this.cfg.main;
  55     if (!c.daemonize) return;

то

  • Введите repl в консоли debug>
  • Тип this.cfg.main.daemonize = false
  • Нажмите Ctrl+c один раз, чтобы выйти из repl
  • Продолжить отладку...

Ответ 3

Я думаю, что может быть немного поздно ответить на вопрос, добавляя app.listen(), чтобы приложение запускалось непосредственно с помощью node app.js

app.listen(port, function(){ console.log("Starting on port:",port) } )