Skip to content

Commit 55329b0

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

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

src/auto/injector.js

+10-7
Original file line numberDiff line numberDiff line change
@@ -622,14 +622,17 @@ function createInjector(modulesToLoad, strictDi) {
622622
}
623623
},
624624
providerInjector = (providerCache.$injector =
625-
createInternalInjector(providerCache, function() {
625+
createInternalInjector(providerCache, function(serviceName, caller) {
626+
if (angular.isString(caller)) {
627+
path.push(caller);
628+
}
626629
throw $injectorMinErr('unpr', "Unknown provider: {0}", path.join(' <- '));
627630
})),
628631
instanceCache = {},
629632
instanceInjector = (instanceCache.$injector =
630-
createInternalInjector(instanceCache, function(servicename) {
631-
var provider = providerInjector.get(servicename + providerSuffix);
632-
return instanceInjector.invoke(provider.$get, provider, undefined, servicename);
633+
createInternalInjector(instanceCache, function(serviceName, caller) {
634+
var provider = providerInjector.get(serviceName + providerSuffix, caller);
635+
return instanceInjector.invoke(provider.$get, provider, undefined, serviceName);
633636
}));
634637

635638

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

760763
function createInternalInjector(cache, factory) {
761764

762-
function getService(serviceName) {
765+
function getService(serviceName, caller) {
763766
if (cache.hasOwnProperty(serviceName)) {
764767
if (cache[serviceName] === INSTANTIATING) {
765768
throw $injectorMinErr('cdep', 'Circular dependency found: {0}',
@@ -770,7 +773,7 @@ function createInjector(modulesToLoad, strictDi) {
770773
try {
771774
path.unshift(serviceName);
772775
cache[serviceName] = INSTANTIATING;
773-
return cache[serviceName] = factory(serviceName);
776+
return cache[serviceName] = factory(serviceName, caller);
774777
} catch (err) {
775778
if (cache[serviceName] === INSTANTIATING) {
776779
delete cache[serviceName];
@@ -802,7 +805,7 @@ function createInjector(modulesToLoad, strictDi) {
802805
args.push(
803806
locals && locals.hasOwnProperty(key)
804807
? locals[key]
805-
: getService(key)
808+
: getService(key, serviceName)
806809
);
807810
}
808811
if (isArray(fn)) {

0 commit comments

Comments
 (0)