Npm start vs node app.js

Я необычайно новичок в Node и пытаюсь разобраться в основах приложений. Мне любопытно, почему эти две команды:

node app.js

- против -

npm start

выводит ту же самую вещь на консоль и, как представляется, продолжает "прослушивание", но почему, когда я пытаюсь получить доступ к http://localhost:3000, я получаю 404 только при запуске первой команды.

Я вижу, что Express 4, похоже, имеет другую структуру приложения, но почему он успешно прослушивается, а другой нет, несмотря на то же поведение в консоли?

Любое объяснение полезно. Спасибо!

Ответы

Ответ 1

Две из этих команд не обязательно одинаковы. npm start запускается независимо от того, что говорит "start" script config, как указано в вашем "package.json", node app.js выполняет файл app.js в 'node'. Подробнее см. http://browsenpm.org/package.json. Поэтому, если у вас есть следующий пакет package.json, то команды совершенно разные.

{
    "name": "my cool node project",
    ....
    "scripts": {
        "start": "node index.js"
    }
    ....
}

Следующий пакет package.json - это то, что вы хотите сделать его идентичным.

{
    "name": "my cool node project",
    ....
    "scripts": {
        "start": "node app.js"
    }
    ....
}

Я бы начал с проверки того, что запускается "start" script, и попробуйте запустить ту же самую команду непосредственно в CLI, а не через NPM, чтобы узнать, где разница.

но почему он успешно прослушивает, а другой не выполняет

Если сервер возвращает 404, это предполагает, что сервер прослушивает, но либо корень документа, либо права доступа не настроены должным образом, поэтому он возвращает ответ "Файл не найден".