アプリを起動したときの「npm start」と「node app.js」の違いは?


188

コマンドを使用してアプリケーションをインストールしましたexpress new 'filename'。私はあなたがあなたを使ってアプリケーションを始めることができることを学びました:

npm start

これまでのところ、私は使用しました:

node app.js

サーバーを起動します。誰もが2つの違いが何であるか知っていますか?ありがとう。

回答:


267

マニュアルページから、npm start:

提供されている場合は、パッケージの「開始」スクリプトを実行します。バージョンが指定されていない場合は、「アクティブ」バージョンを開始します。

確かに、その説明はまったく役に立たないので、それだけです。少なくとも、socket.ioよりも文書化されています。

とにかく、実際に何が起こるかというと、npmはpackage.jsonファイルを調べ、

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

その後、それを行います。npmが開始スクリプトを見つけられない場合、デフォルトで次のようになります。

ノードserver.js

 


4
ああ、なるほど。したがって、コンパイル時により多くのスクリプトを実行することを選択しない限り、基本的に同じです。
ReneGAED 2012

1
通常「node server.js」と入力すれば、はい。
ユスフX

1
新しいアプリを1つ作成しましたが、npm startが機能していません。古いアプリの場合は問題なく実行されています。助言がありますか?
学習者2015

1
たとえば、 "node app.js"はルーターの変更を取得しませんが、 "npm start"はpackage.json起動スクリプト( "node ./bin/www"など)を実行するため、取得します
Igor Vaschuk

1
「npm」で開始すると、コンソールで「rs」と入力するだけでアプリを再起動できます。
Elf

10

ドキュメントが更新されています。私の回答には、承認済みの回答と比較して大幅な変更があります。ドキュメントが最新であることを反映したかったので、承認済みの回答にはいくつかのリンク切れがあります。

また、受け入れられた回答がいつ「デフォルト」になっているのか理解できませんでしたnode server.js。ドキュメントはデフォルトの動作を明確にしていると思います:

npm-start

パッケージを開始する

あらすじ

npm start [-- <args>]

説明

これにより、パッケージのstartscripts」オブジェクトの「」プロパティで指定された任意のコマンドが実行されますstartscripts」オブジェクトに「」プロパティが指定されていない場合は、実行されますnode server.js

要約すると、実行npm startすると次の2つのいずれかが行われます。

  1. npm start {command_name}:任意のコマンドを実行します(つまり、そのようなコマンドがstartpackage.jsonのscriptsオブジェクトのプロパティで指定されている場合)
  2. npm startstartプロパティが存在しない場合(またはcommand_name渡されない場合)以外の場合:実行node server.js適切はない可能性がありますserver.js。たとえば、OPにない; OPが実行されますnodeapp.js
  3. 2つの項目のみをリストするとしましたが、他の可能性(つまり、エラーの場合)です。たとえばpackage.json、を実行するディレクトリにがない場合npm start、エラーが表示されることがあります。npm ERR! enoent ENOENT: no such file or directory, open '.\package.json'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.