diff --git a/lib/preprocessor.js b/lib/preprocessor.js index d8569177f..0a8c815d2 100644 --- a/lib/preprocessor.js +++ b/lib/preprocessor.js @@ -27,8 +27,10 @@ var createPreprocessor = function (config, basePath, injector) { return } + var p + try { - instances[name] = injector.get('preprocessor:' + name) + p = injector.get('preprocessor:' + name) } catch (e) { if (e.message.indexOf('No provider for "preprocessor:' + name + '"') !== -1) { log.warn('Can not load "%s", it is not registered!\n ' + @@ -39,6 +41,8 @@ var createPreprocessor = function (config, basePath, injector) { alreadyDisplayedWarnings[name] = true } + + return p } patterns.forEach(function (pattern) { @@ -80,10 +84,21 @@ var createPreprocessor = function (config, basePath, injector) { config[patterns[i]].join(', '), file.originalPath) } else { config[patterns[i]].forEach(function (name) { - if (!instances[name]) { - instantiatePreprocessor(name) + var p = instances[name] + if (p == null) { + p = instantiatePreprocessor(name) } - preprocessors.push(instances[name]) + + if (p == null) { + if (!alreadyDisplayedWarnings[name]) { + alreadyDisplayedWarnings[name] = true + log.warn('Failed to instantiate preprocessor %s', name) + } + return + } + + instances[name] = p + preprocessors.push(p) }) } }