Use the defaults if given a blank config file

This allows Vector to load from file:// URIs without breaking if
there is no config file (because we explicitly look for 404s, and
file:// URIs don't return 404s).
This commit is contained in:
David Baker 2016-11-02 17:57:27 +00:00
parent 0b5085ecbb
commit 19238b9326

View File

@ -179,14 +179,27 @@ function getConfig() {
let deferred = q.defer(); let deferred = q.defer();
request( request(
{ method: "GET", url: "config.json", json: true }, { method: "GET", url: "config.json" },
(err, response, body) => { (err, response, body) => {
if (err || response.status < 200 || response.status >= 300) { if (err || response.status < 200 || response.status >= 300) {
// Lack of a config isn't an error, we should
// just use the defaults.
// Also treat a blank config as no config because
// we don't get 404s from file: URIs so this is the
// only way we can not fail if the file doesn't exist
// when loading from a file:// URI.
if (( err && err.response.status == 404) || body == '') {
deferred.resolve({});
}
deferred.reject({err: err, response: response}); deferred.reject({err: err, response: response});
return; return;
} }
deferred.resolve(body); // We parse the JSON ourselves rather than use the JSON
// parameter, since this throws a parse error on empty
// which breaks if there's no config.json and we're
// loading from the filesystem (see above).
deferred.resolve(JSON.parse(body));
} }
); );
@ -239,14 +252,8 @@ async function loadApp() {
try { try {
configJson = await getConfig(); configJson = await getConfig();
} catch (e) { } catch (e) {
// On 404 errors, carry on without a config,
// but on other errors, fail, otherwise it will
// lead to subtle errors where the app runs with
// the default config if it fails to fetch config.json.
if (e.response.status != 404) {
configError = e; configError = e;
} }
}
console.log("Vector starting at "+window.location); console.log("Vector starting at "+window.location);
if (configError) { if (configError) {