如何阻止节点js服务器崩溃

Goj*_*e87 6 javascript webserver node.js

我是节点js的新手.我试图创建一个简单的HTTP服务器.我按照着名的例子创建了一个'Hello World!' 服务器如下.

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');
Run Code Online (Sandbox Code Playgroud)

运行此代码将按预期正确启动服务器.但是尝试访问http://127.0.0.1:8080会因为抛出res1未定义的错误而导致崩溃.我希望服务器仍然可以继续运行,并在遇到错误时正常报告错误.

我该如何实现?我试过try-catch但这对我没有帮助:(

Tom*_*ero 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');
Run Code Online (Sandbox Code Playgroud)

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');
    }
};
Run Code Online (Sandbox Code Playgroud)

3-我猜这个例子只是一个例子而不是实际的代码,这是一个可以防止的解析错误.我提到这一点,因为你需要在异常捕获处理程序上没有解析错误.

4-请注意,process将来将使用替换节点

5-我宁愿使用像express那样的框架,而不是做这些东西.

6-推荐讲座:StackOverflow - NodeJS异常处理的最佳实践