diff --git a/core/bbs.js b/core/bbs.js index 074a742b..87289e94 100644 --- a/core/bbs.js +++ b/core/bbs.js @@ -54,6 +54,8 @@ function printVersionAndExit() { } function main() { + let errorDisplayed = false; + async.waterfall( [ function processArgs(callback) { @@ -87,7 +89,14 @@ function main() { configPathSupplied = null; // make non-fatal; we'll go with defaults } } else { - console.error(err.message); + errorDisplayed = true; + console.error(`Configuration error: ${err.message}`); // eslint-disable-line no-console + if (err.hint) { + console.error(`Hint: ${err.hint}`); + } + if (err.configPath) { + console.error(`Note: ${err.configPath}`); + } } } return callback(err); @@ -114,7 +123,7 @@ function main() { }); } - if(err) { + if(err && !errorDisplayed) { console.error('Error initializing: ' + util.inspect(err)); } } diff --git a/core/config.js b/core/config.js index 791845b8..8c77de0c 100644 --- a/core/config.js +++ b/core/config.js @@ -48,7 +48,6 @@ exports.Config = class Config extends ConfigLoader { systemConfigInstance = new Config(options); systemConfigInstance.init(baseConfigPath, err => { if (err) { - console.stdout(`Configuration ${baseConfigPath} error: ${err.message}`); // eslint-disable-line no-console return cb(err); } @@ -56,7 +55,7 @@ exports.Config = class Config extends ConfigLoader { // instance we just created exports.get = systemConfigInstance.get.bind(systemConfigInstance); - return cb(err); + return cb(null); }); } diff --git a/core/config_loader.js b/core/config_loader.js index 768cbe1d..da3de0d9 100644 --- a/core/config_loader.js +++ b/core/config_loader.js @@ -180,6 +180,9 @@ module.exports = class ConfigLoader { }; ConfigCache.getConfigWithOptions(options, (err, config) => { + if (err) { + err.configPath = options.filePath; + } return cb(err, config); }); }