Різниця між `npm start` і` node app.js`, коли запускаєте додаток?


188

Я встановив додаток за допомогою команди express new 'filename'. Щойно я дізнався, що можна запустити програму, використовуючи:

npm start

Поки що я використовував:

node app.js

запустити мій сервер. Хтось знає, в чому різниця між ними? Дякую.

Відповіді:


267

Із початкової сторінки npm start:

запускає сценарій запуску пакета, якщо такий був наданий. Якщо версія не вказана, вона запускає "активну" версію.

Справді, цей опис абсолютно не допомагає, і це все, що говорить. Принаймні, це більш задокументовано, ніж socket.io.

У будь-якому випадку, що насправді відбувається, це те, що npm виглядає у вашому файлі package.json , і якщо у вас є щось подібне

"script": {"start": "coffee server.coffee"}

тоді це зробить. Якщо npm не може знайти ваш початковий сценарій, він за замовчуванням:

вузол server.js

 


4
А, бачу. Отже, це по суті те саме, якщо ви не вирішите запускати більше сценаріїв під час компіляції.
ReneGAED

1
Якщо ви зазвичай набираєте "node server.js", то так.
Юсуф X

1
я створив одну нову програму, npm start не працює. для старого додатка він працює нормально. будь-які пропозиції?
учень

1
Наприклад, "node app.js" не підбере зміни маршрутизатора, тоді як "npm start" буде виконувати, як він виконує сценарій запуску package.json (наприклад, "node ./bin/www")
Ігор Ващук

1
якщо ви почнете з 'npm', він може перезапустити додаток, просто набравши 'rs' на консолі.
Ельф

10

Документація була оновлена . Моя відповідь суттєво змінилася щодо прийнятої відповіді: я хотів відобразити, що документація є актуальною, і прийнята відповідь має декілька ламаних посилань.

Крім того, я не розумів, коли у прийнятій відповіді було сказано, що "це за замовчуванням node server.js". Я думаю, що документація пояснює поведінку за замовчуванням:

npm-start

Почніть пакет

Конспект

npm start [-- <args>]

Опис

Це виконує довільну команду, вказану у " start" властивості пакету його " scripts" об'єкта . Якщо на startоб'єкті не вказано жодне властивість, воно " scripts" запуститься node server.js.

Підсумовуючи це, біг npm startможе зробити одне з двох:

  1. npm start {command_name}: Запустіть довільну команду (тобто якщо така команда вказана у startвластивості об'єкта package.json scripts)
  2. npm start: В іншому випадку, якщо немає startвластивості (або не command_nameпередано): Запустити node server.js(що може бути невідповідним , наприклад, ОП не має server.js; ОП працює nodeapp.js)
  3. Я сказав, що перерахую лише 2 пункти, але є інші можливості (тобто випадки помилок). Наприклад, якщо package.jsonв каталозі, де ви працюєте npm start, немає, ви можете побачити помилку:npm ERR! enoent ENOENT: no such file or directory, open '.\package.json'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.