fix error handling
This commit is contained in:
parent
db7e736659
commit
0ae9e5a069
|
@ -28,41 +28,41 @@ module.exports.create = function (securePort, certsPath, vhostsdir) {
|
|||
return dummyCerts;
|
||||
}
|
||||
|
||||
function handleAppScopedError(fn) {
|
||||
return function (req, res, next) {
|
||||
next(function (err) {
|
||||
if (!err) {
|
||||
fn(req, res);
|
||||
return;
|
||||
}
|
||||
function handleAppScopedError(req, res, fn) {
|
||||
function next(err) {
|
||||
if (!err) {
|
||||
fn(req, res);
|
||||
return;
|
||||
}
|
||||
|
||||
console.error(err);
|
||||
res.writeHead(500);
|
||||
res.end(
|
||||
"<html>"
|
||||
+ "<head>"
|
||||
+ '<link rel="icon" href="favicon.ico" />'
|
||||
+ "</head>"
|
||||
+ "<body>"
|
||||
+ "<pre>"
|
||||
+ "<code>"
|
||||
+ "Method: " + req.method
|
||||
+ '\n'
|
||||
+ "Hostname: " + domaininfo.hostname
|
||||
+ '\n'
|
||||
+ "App: " + (domaininfo.pathname ? (domaininfo.pathname + '/') : '')
|
||||
+ '\n'
|
||||
+ "Route: " + req.url//.replace(/^\//, '')
|
||||
+ '\n'
|
||||
// TODO better sanatization
|
||||
+ 'Error: ' + (err.message || err.toString()).replace(/</g, '<')
|
||||
+ "</code>"
|
||||
+ "</pre>"
|
||||
+ "</body>"
|
||||
+ "</html>"
|
||||
);
|
||||
});
|
||||
console.error(err);
|
||||
res.writeHead(500);
|
||||
res.end(
|
||||
"<html>"
|
||||
+ "<head>"
|
||||
+ '<link rel="icon" href="favicon.ico" />'
|
||||
+ "</head>"
|
||||
+ "<body>"
|
||||
+ "<pre>"
|
||||
+ "<code>"
|
||||
+ "Method: " + req.method
|
||||
+ '\n'
|
||||
+ "Hostname: " + domaininfo.hostname
|
||||
+ '\n'
|
||||
+ "App: " + (domaininfo.pathname ? (domaininfo.pathname + '/') : '')
|
||||
+ '\n'
|
||||
+ "Route: " + req.url//.replace(/^\//, '')
|
||||
+ '\n'
|
||||
// TODO better sanatization
|
||||
+ 'Error: ' + (err.message || err.toString()).replace(/</g, '<')
|
||||
+ "</code>"
|
||||
+ "</pre>"
|
||||
+ "</body>"
|
||||
+ "</html>"
|
||||
);
|
||||
}
|
||||
|
||||
return next;
|
||||
}
|
||||
|
||||
function createSecureContext(certs) {
|
||||
|
@ -135,14 +135,14 @@ module.exports.create = function (securePort, certsPath, vhostsdir) {
|
|||
// we always add it explicitly
|
||||
function localAppWrapped(req, res) {
|
||||
console.log('[debug]', domaininfo.hostname + '/' + domaininfo.pathname, req.url);
|
||||
localApp(req, res, handleAppScopedError(function () {
|
||||
localApp(req, res, handleAppScopedError(req, res, function (req, res) {
|
||||
if (!serveFavicon) {
|
||||
serveFavicon = require('serve-favicon')(path.join(__dirname, '..', 'public', 'favicon.ico'));
|
||||
}
|
||||
|
||||
// TODO redirect GET /favicon.ico to GET (req.headers.referer||'') + /favicon.ico
|
||||
// TODO other common root things - robots.txt, app-icon, etc
|
||||
serveFavicon(req, res, handleAppScopedError(function () {
|
||||
serveFavicon(req, res, handleAppScopedError(req, res, function (req, res) {
|
||||
res.writeHead(404);
|
||||
res.end(
|
||||
"<html>"
|
||||
|
|
Loading…
Reference in New Issue