1

私は単純なノードスクリプトを持っています

var http = require('http');

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

これを実行すると、localhost:1337 に移動して出力を確認できますが、コマンド モジュールでは何らかの理由でフリーズします。ctrl+C を押すまでフリーズし、Ctrl+C を押した後にのみ、さらにファイルを実行できます。

これは私だけですか、それとも設計された方法ですか。もしそうなら、誰かが常にポート1337または別のファイルをリッスンする方法について正しい方向に向けることができます。

4

1 に答える 1

2

これは正常な動作です。Ctrlノードは、他に何もすることがない場合 (または+で手動で停止した場合C) にのみ終了します。に http を伝えたのでlisten()、プロセスは無期限に存続します。

何を求めているのかは明確ではありませんが、アプリ内で追加のファイルを実行したい場合は、単純require()にそれらを実行します。

var otherFile = require('./otherFile.js') // the .js is optional

otherFilemodule.exportsこれで、otherFile.js で何を行っても設定されます。

どのように機能するかを完全に理解するには、モジュールのドキュメントを読む必要がありますrequire

関連のない他のファイルを node で同時に実行する場合は、別のコマンド プロンプト ウィンドウを開きます。


行間を少し読んでみましょう。他の Web サーバーのように、http を取得してディスクからファイルを提供する方法を知りたいと思われるかもしれません。Node は従来の Web サーバーのようには機能しません。コードは、ディスクからの提供を明示的に処理する必要があります。

幸いなことに、それを簡単に行えるフレームワーク/ライブラリがあります。何らかの種類の Web サービスを構築している場合は、生の http モジュールではなく、フレームワークを実際に使用する必要があります。Expressを見ることをお勧めします。を使用して、ディスクからファイルを簡単に提供できますexpress.static

于 2013-08-01T22:01:26.983 に答える