web-dev-qa-db-ja.com

npm start vs node app.js

Nodeに非常に慣れていないので、アプリの基本を理解しようとしています。これらの2つのコマンドの理由について興味があります。

ノードapp.js

--vs--

npm start

同じものをコンソールに出力し、「リスニング」を続けているように見えますが、なぜ http:// localhost:30 にアクセスしようとすると、最初のコマンドを実行したときにのみ404が表示されます。

Express 4は異なるアプリ構造を持っているようですが、コンソールで同じ動作をしているにもかかわらず、一方が正常にリッスンし、もう一方がリッスンしないのはなぜですか?

説明は役に立ちます。ありがとう!

43
dudewad

これらの2つのコマンドは必ずしも同じではありません。 npm startは、 'package.json'で定義されたとおりに実行するように 'start'スクリプト構成が指示するものは何でも実行します、node app.jsは、「ノード」で「app.js」ファイルを実行します。詳細については、 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"
    }
    ....
}

「開始」スクリプトが実行するように設定されているものを確認することから始めて、NPMではなくCLIで同じコマンドを直接実行して、違いを確認します。

しかし、なぜ一方が正常にリッスンし、もう一方がリッスンしないのですか

サーバーが404を返している場合、サーバーがリッスンしていることを示しますが、ドキュメントルートまたはアクセス許可が適切にセットアップされていないため、「ファイルが見つかりません」という応答を返します。

41
andyberry88

上記の回答に加えて、ポイントを追加したいと思います。

npm startscripts部分を持たずにpackage.jsonを実行すると、npmがそのディレクトリでserver.jsを探します。 node server.jsを使用して実行すると、エラーメッセージとしてnpm ERR! missing script: startがスローされます。

8
BlackBeard

追加したいことはもう少しあります

まず第一に

Node-JavaScriptコードの実行時

NPMはパッケージマネージャーであり、パッケージのダウンロード、更新、実行などに使用できます。

  1. ウェブサイト
  2. npm CLI
  3. レジストリ

here を読んで、それがあなたのために何をするかを見てください。

node any.js-これは、単にJavaScriptファイル「any、js」を実行します。サーバーを起動するためのコードがない場合、エラーが発生します

npm start-package.jsonでstartコマンドを実行します。以下がpackage.jsonの起動スクリプトである場合の非常に基本的な例

enter image description here

コンソールに「Hello」と表示されます。

cRAを使用して反応アプリを作成する場合、通常、このセクションには「react-scripts start」が含まれます。開発環境をセットアップしてサーバーを起動し、ホットモジュールをリロードする

それが、この場合にエラーが発生しない理由です

0
Pradeep