diff --git a/lib/sw-precache.js b/lib/sw-precache.js index 83f84e0..69bd0c2 100644 --- a/lib/sw-precache.js +++ b/lib/sw-precache.js @@ -116,9 +116,29 @@ function generate(params, callback) { }); Object.keys(params.dynamicUrlToDependencies).forEach(function(dynamicUrl) { + if (!Array.isArray(params.dynamicUrlToDependencies[dynamicUrl])) { + throw Error(util.format( + 'The value for the dynamicUrlToDependencies.%s option must be an Array.', dynamicUrl)); + } + var filesAndSizesAndHashes = params.dynamicUrlToDependencies[dynamicUrl] .sort() - .map(getFileAndSizeAndHashForFile); + .map(function(file) { + try { + return getFileAndSizeAndHashForFile(file); + } catch (e) { + // Provide some additional information about the failure if the file is missing. + if (e.code === 'ENOENT') { + params.logger(util.format( + '%s was listed as a dependency for dynamic URL %s, but the file does not exist. ' + + 'Either remove the entry as a dependency, or correct the path to the file.', + file, dynamicUrl + )); + } + // Re-throw the exception unconditionally, since this should be treated as fatal. + throw e; + } + }); var concatenatedHashes = ''; filesAndSizesAndHashes.forEach(function(fileAndSizeAndHash) {