Ответ 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, это предполагает, что сервер прослушивает, но либо корень документа, либо права доступа не настроены должным образом, поэтому он возвращает ответ "Файл не найден".