私は Express のドキュメントを調べましたが、エラー処理を説明する部分は完全にわかりません。
app
彼らが言及しているのはインスタンスだと思いましたよねcreateServer()
?しかし、リクエストの処理中に例外が発生したときに、node.js がアプリケーション プロセスを爆破するのを止める方法がわかりません。
派手なものは本当に必要ありません。例外が発生するたびに、ステータス 500 と空の応答を返したいだけです。キャッチされない例外がどこかにあったという理由だけで、ノード プロセスを終了してはなりません。
これを達成する方法の簡単な例はありますか?
var express = require('express');
var http = require('http');
var app = express.createServer();
app.get('/', function(req, res){
console.log("debug", "calling")
var options = {
host: 'www.google.com',
port: 80,
path: "/"
};
http.get(options, function(response) {
response.on("data", function(chunk) {
console.log("data: " + chunk);
chunk.call(); // no such method; throws here
});
}).on('error', function(e) {
console.log("error connecting" + e.message);
});
});
app.configure(function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.listen(3000);
アプリ全体がクラッシュし、トレースバックが生成されます
mypath/tst.js:16
chunk.call(); // no such method; throws here
^ TypeError: Object ... has no method 'call'
at IncomingMessage.<anonymous> (/Library/WebServer/Documents/discovery/tst.js:16:18)
at IncomingMessage.emit (events.js:67:17)
at HTTPParser.onBody (http.js:115:23)
at Socket.ondata (http.js:1150:24)
at TCP.onread (net.js:374:27)