better try/catch for apps
This commit is contained in:
parent
5d0fecf0a9
commit
b66b6e31f9
|
@ -65,6 +65,14 @@ require('ssl-root-cas')
|
||||||
.inject()
|
.inject()
|
||||||
;
|
;
|
||||||
|
|
||||||
|
function getDummyAppContext(err, msg) {
|
||||||
|
if (err) {
|
||||||
|
console.error(err);
|
||||||
|
}
|
||||||
|
return connect().use(function (req, res) {
|
||||||
|
res.end('{ "error": { "message": "' + msg.replace(/"/g, '\\"') + '" } }');
|
||||||
|
});
|
||||||
|
}
|
||||||
function getAppContext(domaininfo) {
|
function getAppContext(domaininfo) {
|
||||||
var localApp;
|
var localApp;
|
||||||
|
|
||||||
|
@ -74,17 +82,21 @@ function getAppContext(domaininfo) {
|
||||||
// TODO read local config.yml and pass it in
|
// TODO read local config.yml and pass it in
|
||||||
// TODO pass in websocket
|
// TODO pass in websocket
|
||||||
localApp = localApp.create(/*config*/);
|
localApp = localApp.create(/*config*/);
|
||||||
|
if (!localApp) {
|
||||||
|
return getDummyAppContext(err, "[ERROR] no app was returned by app.js for " + domaininfo.driname);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!localApp.then) {
|
if (!localApp.then) {
|
||||||
localApp = PromiseA.resolve(localApp);
|
localApp = PromiseA.resolve(localApp);
|
||||||
|
} else {
|
||||||
|
return localApp.catch(function (e) {
|
||||||
|
return getDummyAppContext(e, "[ERROR] initialization failed during create() for " + domaininfo.dirname);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
console.error("[ERROR] could not load app.js for " + domaininfo.dirname);
|
localApp = getDummyAppContext(err, "[ERROR] could not load app.js for " + domaininfo.dirname);
|
||||||
console.error(e);
|
|
||||||
localApp = connect().use(function (req, res) {
|
|
||||||
res.end('{ "error": { "message": "could not load app.js for ' + domaininfo.dirname + '" } }');
|
|
||||||
});
|
|
||||||
localApp = PromiseA.resolve(localApp);
|
localApp = PromiseA.resolve(localApp);
|
||||||
|
|
||||||
return localApp;
|
return localApp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,8 +160,13 @@ forEachAsync(rootDomains, loadCerts).then(function () {
|
||||||
return getAppContext(domaininfo).then(function (localApp) {
|
return getAppContext(domaininfo).then(function (localApp) {
|
||||||
// Note: pathname should NEVER have a leading '/' on its own
|
// Note: pathname should NEVER have a leading '/' on its own
|
||||||
// we always add it explicitly
|
// we always add it explicitly
|
||||||
|
try {
|
||||||
domainMergeMap[domaininfo.hostname].apps.use('/' + domaininfo.pathname, localApp);
|
domainMergeMap[domaininfo.hostname].apps.use('/' + domaininfo.pathname, localApp);
|
||||||
console.info('Loaded ' + domaininfo.hostname + ':' + securePort + '/' + domaininfo.pathname);
|
console.info('Loaded ' + domaininfo.hostname + ':' + securePort + '/' + domaininfo.pathname);
|
||||||
|
} catch(e) {
|
||||||
|
console.error('[ERROR] ' + domaininfo.hostname + ':' + securePort + '/' + domaininfo.pathname);
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
domainMerged.forEach(function (domainApp) {
|
domainMerged.forEach(function (domainApp) {
|
||||||
|
|
Loading…
Reference in New Issue