相关疑难解决方法(0)

使node.js在出错时不退出

我正在使用Socket.IO在面向websocket的node.js服务器上工作.我注意到一个错误,某些浏览器没有遵循正确的连接过程到服务器,并且代码没有被写入以优雅地处理它,简而言之,它调用一个方法到一个从未设置的对象,从而杀死服务器由于错误.

我关心的不是特别是bug,而是当发生这样的错误时,整个服务器都会崩溃.有什么我可以在节点的全局级别上做到这一点,如果发生错误它只会记录一条消息,可能会杀死事件,但服务器进程将继续运行?

我不希望其他用户的连接因为一个聪明的用户在大型包含的代码库中利用未被捕获的错误而关闭.

node.js

55
推荐指数
3
解决办法
4万
查看次数

Node.js Express应用程序处理启动错误

我在Node.js和Express中有应用程序.我需要为它编写测试.我在处理Express应用程序错误时遇到问题.我发现这个如何捕获node.js/express服务器错误,如EADDRINUSE?,但它对我不起作用,我不知道为什么.我想处理在执行expressApp.listen()时可能发生的错误(EADDRINUSE,EACCES等).

express = require('express')
listener = express()

#doesn't work for me
listener.on('uncaughtException', (err) ->
  #do something
)

#doesn't work too
listener.on("error", (err) ->
  #do something
)

#this works, but it caughts all errors in process, I want only in listener
process.on('uncaughtException', (err) ->
  #do something
)

listener.listen(80) #for example 80 to get error
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

javascript error-handling node.js coffeescript express

15
推荐指数
3
解决办法
2万
查看次数

处理快递中的异常

我无法理解如何处理看起来像是快递的一个非常基本的方面.如果我有一些代码在异步回调中抛出异常,我就无法捕获该异常,因为在回调运行时try/catch块不再在范围内.在这些情况下,浏览器将挂起,直到它最终放弃,表明服务器没有响应.这是一个非常糟糕的用户体验.我宁愿能够立即向客户端返回500错误.默认的快速错误处理程序显然不处理这种情况.以下是一些示例代码:

var express = require("express");

var app = express();
app.use(app.router);
//express error handler (never called)
app.use(function(err, req, res, next) {
    console.log(err);
    res.send(500);
});

app.get("/test", function(req, res, next) {
    require("fs").readFile("/some/file", function(err, data) {
        a.b(); //blow up
    });
});

app.listen(8888);
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,行ab()抛出"ReferenceError:a is not defined"异常.永远不会调用定义的错误处理程序.请注意,fs.readFile()返回的错误对象在这种情况下为null,因为文件已正确读取.错误是异步处理程序中的代码.

我已经读过这篇关于使用node的uncaughtExpception的文章,但文档说不使用该方法.即使我确实使用过它,我如何将500响应发送回用户?我不再使用快速响应对象了.

那么你如何处理这种情况?

exception node.js express

6
推荐指数
2
解决办法
5736
查看次数

处理http服务器崩溃

我有一个非常基本的http服务器:

require("http").createServer(function (req, res) {
    res.end("Hello world!");                      
}).listen(8080);                                 
Run Code Online (Sandbox Code Playgroud)

如何监听服务器崩溃,以便我可以发送500状态代码作为响应?

process.on("uncaughtException", handler)process级别上听作品,但我没有请求和响应对象.

我看到的一个可能的解决方案是try - catchcreateServer回调中使用语句,但我在寻找是否有更好的解决方案.

我试着errorserver对象上侦听事件,但没有任何反应:

var s = require("http").createServer(function (req, res) {
    undefined.foo; // test crash
    res.end("Hello world!");                      
});
s.on("error", function () { console.log(arguments); });
s.listen(8080);                                 
Run Code Online (Sandbox Code Playgroud)

javascript http node.js

5
推荐指数
1
解决办法
450
查看次数