6

私はノードjsを初めて使用します。単純なHTTPサーバーを作成しようとしていました。有名な例に従って、「HelloWorld!」を作成しました。次のようにサーバー。

var handleRequest = function(req, res) {
  res.writeHead(200);
  res1.end('Hello, World!\n');
};

require('http').createServer(handleRequest).listen(8080);

console.log('Server started on port 8080');

このコードを実行すると、サーバーが期待どおりに正しく起動します。ただし、アクセスしようとすると、定義されhttp://127.0.0.1:8080ていないエラーがスローされてクラッシュします。res1サーバーを引き続き実行し、エラーが発生するたびに適切にエラーを報告してもらいたいと思います。

どうすればそれを達成できますか?私はtry-catchを試しましたが、それは私を助けていません:(

4

3 に答える 3

6

ここにはたくさんのコメントがあります。まず、サンプルサーバーが機能するには、使用する前にhandleRequestを定義する必要があります。

1-プロセスの終了を妨げている実際に必要なものは、uncaughtException(ドキュメント)イベントを処理することで処理できます。

var handleRequest = function(req, res) {
    res.writeHead(200);
    res1.end('Hello, World!\n');
};
var server = require('http').createServer(handleRequest);
process.on('uncaughtException', function(ex) {
    // do something with exception
});
server.listen(8080);
console.log('Server started on port 8080');

2-次のように、コードでtry {} catch(e){}を使用することをお勧めします。

var handleRequest = function(req, res) {
    try {
      res.writeHead(200);
      res1.end('Hello, World!\n');
    } catch(e) {
      res.writeHead(200);
      res.end('Boo');
    }
};

3-この例は単なる例であり、実際のコードではないと思います。これは、防止できる解析エラーです。例外キャッチハンドラで解析エラーが発生しないようにする必要があるため、これについて説明します。

process4-ノードは将来ドメインに置き換えられることに注意してください

5-このようなことをするよりも、 expressのようなフレームワークを使用したいです。

6-推奨講義:StackOverflow-例外処理のためのNodeJSのベストプラクティス

于 2013-01-13T17:41:43.297 に答える
1

私はあなたの質問の詳細ではなく、ノードサーバーのクラッシュを防ぐことについてのあなたの質問のタイトルを対象としています。おそらくDOMAINを使用できます。これにより、uncaughtExceptionがスローされたときにサーバーがクラッシュするのを防ぐことができます。

domain = require('domain'),
d = domain.create();

d.on('error', function(err) {
  console.error(err);
});

詳細については、http://shapeshed.com/uncaught-exceptions-in-node/にアクセスしてください。

このメソッドを使用する以外に、ブロックをキャッチする必要があります。

于 2014-03-15T13:32:23.723 に答える
0

多分handleRequestそれを使用する前に定義する必要があります:

require('http').createServer(handleRequest).listen(8080);

function handleRequest(req, res) {
  res.writeHead(200);
  res1.end('Hello, World!\n');
};

または

var handleRequest = function(req, res) {
  res.writeHead(200);
  res1.end('Hello, World!\n');
};

require('http').createServer(handleRequest).listen(8080);

そして、それres1も存在することを確認する必要があります。

于 2013-01-13T17:24:40.663 に答える