Skip to content

Commit 3d651a3

Browse files
committed
feat($injector): print caller name in "unknown provider" errors (when available)
Fixes angular#8135
1 parent 89c57a8 commit 3d651a3

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

src/auto/injector.js

+8-8
Original file line numberDiff line numberDiff line change
@@ -622,14 +622,14 @@ function createInjector(modulesToLoad, strictDi) {
622622
}
623623
},
624624
providerInjector = (providerCache.$injector =
625-
createInternalInjector(providerCache, function() {
626-
throw $injectorMinErr('unpr', "Unknown provider: {0}", path.join(' <- '));
625+
createInternalInjector(providerCache, function(serviceName, caller) {
626+
throw $injectorMinErr('unpr', "Unknown provider: {0}" + (caller ? " in {1}" : ""), path.join(' <- '), caller);
627627
})),
628628
instanceCache = {},
629629
instanceInjector = (instanceCache.$injector =
630-
createInternalInjector(instanceCache, function(servicename) {
631-
var provider = providerInjector.get(servicename + providerSuffix);
632-
return instanceInjector.invoke(provider.$get, provider, undefined, servicename);
630+
createInternalInjector(instanceCache, function(serviceName, caller) {
631+
var provider = providerInjector.get(serviceName + providerSuffix, caller);
632+
return instanceInjector.invoke(provider.$get, provider, undefined, serviceName);
633633
}));
634634

635635

@@ -759,7 +759,7 @@ function createInjector(modulesToLoad, strictDi) {
759759

760760
function createInternalInjector(cache, factory) {
761761

762-
function getService(serviceName) {
762+
function getService(serviceName, caller) {
763763
if (cache.hasOwnProperty(serviceName)) {
764764
if (cache[serviceName] === INSTANTIATING) {
765765
throw $injectorMinErr('cdep', 'Circular dependency found: {0}',
@@ -770,7 +770,7 @@ function createInjector(modulesToLoad, strictDi) {
770770
try {
771771
path.unshift(serviceName);
772772
cache[serviceName] = INSTANTIATING;
773-
return cache[serviceName] = factory(serviceName);
773+
return cache[serviceName] = factory(serviceName, caller);
774774
} catch (err) {
775775
if (cache[serviceName] === INSTANTIATING) {
776776
delete cache[serviceName];
@@ -802,7 +802,7 @@ function createInjector(modulesToLoad, strictDi) {
802802
args.push(
803803
locals && locals.hasOwnProperty(key)
804804
? locals[key]
805-
: getService(key)
805+
: getService(key, serviceName)
806806
);
807807
}
808808
if (isArray(fn)) {

0 commit comments

Comments
 (0)