1

私は node.js が初めてで、いくつかの基本的なことを知りたいです。

  1. プロジェクトファイルをどこに置く?www/PHP の場合と同様に、 ORに入れますhtdocs/

  2. ドキュメントのフォルダに入れて試してみnode /path/to/folder/example.jsました。これは正しいです?

  3. ノードの公式ドキュメントから最初のプログラムを試してみました...が、印刷ではなくコンソールに出力されるだけServer is running at 127.0.0.1:8080です。フォルダ構造が原因でしょうか?

  4. また、node.jsを使用してWebサイト全体を作成することは可能ですか、それとも特定のモジュールのみを作成できますか? モジュールの種類は?

ガイドしてください!

ありがとう!

編集:

これは私が試したコードです。ノードのドキュメントからの最初の「シンプルな Web サーバー」の例です。

var http = require('http');

http.createServer(function (request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello World\n');
}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');

編集:

このコードは次のように出力します:

>node example.js
...

ノードプロンプトにさえ戻りません!

4

2 に答える 2

3
  1. nodeコマンドを実行するユーザーがその場所にアクセスできる限り、ファイルをどこに配置してもかまいません。

    実際、node.jsソースファイルを任意のフォルダー(または公的に利用可能なフォルダー)の外に配置することをお勧めします。そうしないと、ソースファイルがWebサーバーを使用して提供されたときに誰でも読み取り可能になる可能性があります(セキュリティ資格情報を含む可能性があります)。ソースファイルに含まれているため、公開されたままになります)。wwwhtdocs.js

  2. はい、それはノードスクリプトを実行する正しい方法です。ただし、特に後でさまざまなモジュールの使用を開始する場合は、パス解決エラーを防ぐために、最初cdに正しいディレクトリに移動してそこから実行することをお勧めします。node example.jsnpm

  3. おそらくそうではありません。最初に実行しようとしているコードを見ずに判断するのは難しいですが、フォルダ構造などが原因でパス解決エラーが発生した場合は、node「...」を出力せずに厄介なエラーで終了します。

  4. はい、を使用してWebサイト全体を構築することは可能 nodeです。実際、それnpmを簡単にするのに役立つさまざまなモジュールがあります。以下をご覧になることをお勧めします。

    nodeこれらのフレームワークは、本格的なWebサーバー(Cookie、vhosts、セッション、パスルーティングなど)としてより実現可能にするために拡張された多くのベルとホイッスルを提供します。

編集

回答nr.3について詳しく説明します。回答nr.2で推奨した正しいフォルダーから、および絶対パスを使用して、貼り付けたコードを試しました。どちらも正常に機能します。

remco@Prosperpine ~ $ node tests.js 
Server running at http://127.0.0.1:8124/
^C

remco@Prosperpine ~ $ cd /
remco@Prosperpine / $ node /Users/remco/tests.js 
Server running at http://127.0.0.1:8124/

したがって、ノードサーバーが起動し、でコンテンツを提供していhttp://127.0.0.1:8124/ます。これも同様に機能します。

remco@Prosperpine ~ $ wget http://127.0.0.1:8124/ && cat index.html
--2012-07-03 13:25:32--  http://127.0.0.1:8124/
Connecting to 127.0.0.1:8124... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/plain]
Saving to: `index.html'

    [ <=>     ] 12          --.-K/s   in 0s      

2012-07-03 13:25:32 (901 KB/s) - `index.html' saved [12]

Hello World
remco@Prosperpine ~ $ 

したがって、試行しているコードに問題はないと結論付けることができます。おそらく、nodeインストールに問題があります。これはLinux、OSX、またはWindowsですか?

于 2012-07-03T08:22:19.623 に答える
0

問題は、ノードのREPL内からサーバーを実行しようとしていることです。Windowsのコマンドラインから直接実行する必要があります。取得している「...」は、ノードのREPLが有効なJavaScript式の終わりを認識していないため、さらに入力するのを待っていることを意味します。

前の回答に対する最後のコメントに応えて、REPLが呼び出し後に「未定義」を出力する理由は、console.log()それを式として評価し(つまり、メッセージを出力するという副作用があります)、印刷しようとしているためです。その戻り値。実際には何も返さないためconsole.log()(副作用のためにのみ使用されます)、それが「未定義」になる理由です。

于 2012-07-03T23:47:34.993 に答える