diff --git a/lib/dereference.js b/lib/dereference.js index 09576342..8210e229 100644 --- a/lib/dereference.js +++ b/lib/dereference.js @@ -96,7 +96,13 @@ function dereference$Ref ($ref, path, pathFromRoot, parents, $refs, options) { // console.log('Dereferencing $ref pointer "%s" at %s', $ref.$ref, path); let $refPath = url.resolve(path, $ref.$ref); - let pointer = $refs._resolve($refPath, options); + let pointer; + + try { + pointer = $refs._resolve($refPath, options); + } catch (e) { + throw ono(e, { path, originalPath: $ref.$ref }); + } // Check for circular references let directCircular = pointer.circular; diff --git a/lib/resolve-external.js b/lib/resolve-external.js index fb2e0ae7..766903ca 100644 --- a/lib/resolve-external.js +++ b/lib/resolve-external.js @@ -4,6 +4,7 @@ const $Ref = require("./ref"); const Pointer = require("./pointer"); const parse = require("./parse"); const url = require("./util/url"); +const { ono } = require("ono"); module.exports = resolveExternal; @@ -100,8 +101,14 @@ async function resolve$Ref ($ref, path, $refs, options) { return Promise.resolve($ref.value); } - // Parse the $referenced file/url - const result = await parse(resolvedPath, $refs, options); + let result; + + try { + // Parse the $referenced file/url + result = await parse(resolvedPath, $refs, options); + } catch (e) { + throw ono(e, { path: resolvedPath }); + } // Crawl the parsed value // console.log('Resolving $ref pointers in %s', withoutHash);