与其他框架相比,Node.js + Express.js应用程序中的错误报告/处理似乎有所不同.我是否理解它的工作原理如下?
A) 通过接收它们作为回调函数的参数来检测错误.例如:
doSomethingAndRunCallback(function(err) {
if(err) { … }
});
Run Code Online (Sandbox Code Playgroud)
B) 通过调用next(err)在MIDDLEWARE中报告错误.例:
handleRequest(req, res, next) {
// An error occurs…
next(err);
}
Run Code Online (Sandbox Code Playgroud)
C) 通过抛出错误报告 ROUTES中的错误.例:
app.get('/home', function(req, res) {
// An error occurs
throw err;
});
Run Code Online (Sandbox Code Playgroud)
d) 处理通过配置通过app.error自己的错误处理的错误()或使用通用连接错误处理程序.例:
app.error(function(err, req, res, next) {
console.error(err);
res.send('Fail Whale, yo.');
});
Run Code Online (Sandbox Code Playgroud)
这四个原则是Node.js + Express.js应用程序中所有错误处理/报告的基础吗?
如果我使用表单字段发送登录请求action="/login", method="post",它可以正常工作.与此处或此处提供的代码类似.
但如果相反,如果我使用相同的信息发送jquery/ajax,那么护照似乎不起作用.没有通过护照进行实际登录,但是ajax调用给出了误导性的成功消息.
以下不起作用.虽然我收到"登录成功"消息,但登录并没有真正发生.
$('#login_button').click(function () {
var email = $('#email').val();
var password = $('#password').val();
alert ('email/pass:' + email + ", " + password);
$.ajax({
type: "POST",
url: "/login",
data: { email: email , password: password },
dataType: 'html'
})
.done(function () {
console.log("http request succeeded");
alert("login success");
});
});
Run Code Online (Sandbox Code Playgroud)
我需要使用该ajax方法,以便在成功登录后我可以在客户端做一些有用的事情.例如,开始socket.io.
请帮忙.我在这里修改了代码:my-modified-code