2016-10-23 9 views
1

私はthis blogに従っており、セクション4ではアプリケーションの実行方法と実行方法を示しています。それは説明したように働いています。NPMがserver.jsを見つける場所を制御する方法は?

今、私はアプリというディレクトリ内のエントリ・ポイントである、server.jsにファイルを入れたいと思います。しかし、コマンド開始点はそれ以上見つからない。

私が読んだことのあるところでは、package.jsonに次の行を書き込むことになっています。

「スタート」:「アプリ/ server.js」、

を問題は、それはまだそれを見つけることができないと私は本当に問題を診断することができないということです。エントリーポイントがルートになければならないのでしょうか? 開始要素は、JSONファイルに特定の順序で配置する必要がありますか?パスを間違って指定していますか(「\」と「/」など)を試しましたか?

答えて

2

あなたはノードへの呼び出しを逃している:

"start": "node app/server.js", 

はまたpackage.json"scripts"セクションに上記の行を配置することを確認してください。

"scripts": { 
    "start": "node app/server.js", 
    ... 
}, 
+0

これは**問題の1つ**であると確信しています。さて、それが修正された、私はエラーが表示されます*欠落しているスクリプト:開始*。それ以外に何がありますか?それとも新しい質問のための問題なのでしょうか? –

+0

'' start: "node app/server.js" "'が '' package.json "'の '' scripts "'部分にないということがあります。 – nem035

+0

Stupid * Script *セクション... Stupid * start *要素... Stupid * NodeJs * ...(区別できないぶつぶつ...)恐ろしい!それがトリックでした。私はこれでほとんどの面白いです。ほぼ。:) –

0

あなたがnpm startを実行するたびに実行するコマンドとして指定されているpackage.jsonあなたの中にscripts.startの値。つまり、そこに置かれた値は実行可能ファイルとして直接実行されるため、パスを指定するだけではありません。 node app/server.js

  • は完全なコマンドを指定します。

    今、あなたの問題を解決するには、2つのオプションがあります。

  • app/server.js実行してください:、package.jsonのスクリプトセクションにその実行可能なビット(chmod +x app/server.js)を設定し、ファイルにhashbang行を追加します(ファイルの最初の行として#!/usr/bin/env node
0

「開始」キーを記述する'npm start'が実行されたときにnpmで実行されるスクリプト。

... 

"scripts": { 
    "start": "node app/server.js" 
} 

... 

ただし、一部のサーバーでは、他の方法でアプリケーションを起動することがあります。アプリケーションの開始点としてmainファイルを定義することも意味があります。これは以下のようにして行うことができます:

... 

"main": "app/server.js", 
"scripts": { 
    "start": "node app/server.js" 
} 

... 
+0

私は* main *が開始ページの* index.js *を指すと考えました。しかし、おそらくそれは私がだまされた単純化ですか? –

+0

それはアプリケーションの出発点です。基本的に、アプリケーションを起動するためにノードによって実行されなければならないファイル。これは、index.jsを含む何でも呼び出すことができます。 「メイン」キーが見つからない場合、ノードはデフォルトで現在の作業ディレクトリでindex.jsファイルを検索して実行します。 – elem4th

+0

非常に役に立ちます。だから、JSONファイルに** any **要素を持つことができましたか?例えば。 * "ロバ": "node bazinga/shazoo.js" *を実行すれば* n *ロバ*と動作しますか? –

関連する問題