fix($injector): throw when factory $get method does not return a value

BREAKING CHANGE:

Previously, not returning a value would fail silently, and an application trying to inject the
value owuld inject an undefined value, quite possibly leading to a TypeError. Now, the application
will fail entirely, and a reason will be given.

Closes #4575
Closes #9210
This commit is contained in:
Caitlin Potter
2014-09-22 12:20:34 -04:00
parent 39d0b36826
commit 0d3b69a5f2
3 changed files with 65 additions and 8 deletions

View File

@@ -0,0 +1,33 @@
@ngdoc error
@name $injector:undef
@fullName Undefined Value
@description
This error results from registering a factory which does not return a value (or whose return value is undefined).
The following is an example of a factory which will throw this error upon injection:
```js
angular.module("badModule", []).
factory("badFactory", function() {
doLotsOfThings();
butDontReturnAValue();
});
```
In order to prevent the error, return a value of some sort, such as an object which exposes an API for working
with the injected object.
```js
angular.module("goodModule", []).
factory("goodFactory", function() {
doLotsOfThings();
butDontReturnAValue();
return {
doTheThing: function methodThatDoesAThing() {
}
};
});
```