how to stop node js server from crashing
我是节点js的新手。 我试图创建一个简单的HTTP服务器。 我按照着名的例子创建了一个'Hello World!' 服务器如下。
1 2 3 4 5 6 7 8 9 | var handleRequest = function(req, res) { res.writeHead(200); res1.end('Hello, World! '); }; require('http').createServer(handleRequest).listen(8080); console.log('Server started on port 8080'); |
运行此代码将按预期正确启动服务器。 但是尝试访问
我该如何实现? 我试过try-catch但这对我没有帮助:(
这里有很多评论。首先,为了使您的示例服务器正常工作,需要在使用之前定义handleRequest。
1-通过处理uncaughtException(文档)事件,可以处理实际需要的,阻止进程退出的内容:
1 2 3 4 5 6 7 8 9 10 11 | var handleRequest = function(req, res) { res.writeHead(200); res1.end('Hello, World! '); }; 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){},例如:
1 2 3 4 5 6 7 8 9 10 | var handleRequest = function(req, res) { try { res.writeHead(200); res1.end('Hello, World! '); } catch(e) { res.writeHead(200); res.end('Boo'); } }; |
3-我猜这个例子只是一个例子而不是实际的代码,这是一个可以防止的解析错误。我提到这一点,因为你需要在异常捕获处理程序上没有解析错误。
4-请注意,将来将使用域替换节点
5-我宁愿使用像express那样的框架,而不是做这些东西。
6-推荐讲座:StackOverflow - NodeJS异常处理的最佳实践
我不是针对您的问题详细信息,而是针对阻止节点服务器崩溃的问题标题。你可以使用DOMAIN,这可能会在抛出uncaughtException时阻止你的服务器崩溃。
1 2 3 4 5 6 | domain = require('domain'), d = domain.create(); d.on('error', function(err) { console.error(err); }); |
欲了解更多详情,请访问http://shapeshed.com/uncaught-exceptions-in-node/
除了使用这种方法,必须尝试抓住你的块。
也许你应该在使用之前定义
1 2 3 4 5 6 7 | require('http').createServer(handleRequest).listen(8080); function handleRequest(req, res) { res.writeHead(200); res1.end('Hello, World! '); }; |
要么
1 2 3 4 5 6 7 | var handleRequest = function(req, res) { res.writeHead(200); res1.end('Hello, World! '); }; require('http').createServer(handleRequest).listen(8080); |
你应该确定