提供程序 'xx' 必须 return 来自 AngularJs 中 $get 工厂方法的值
Provider 'xx' must return a value from $get factory method in AngularJs
我写了一个angularjs
工厂如下
module.factory('LogService', function () {
function log(msg) {
console.log("Rahkaran:" + new Date() + "::" + msg);
}
return
{
log: log
};
});
但我一直收到这个错误
Provider 'LogService' must return a value from $get factory method
我用谷歌搜索了错误,但找不到任何解决方案。
巧合的是我把return
语句改成了这个
return{
log: log
};
错误消失了!!
{
在return
前面和下一行有区别吗?
这叫做自动分号插入
return 语句受自动分号插入 (ASI) 的影响。 return关键字和允许的表达式之间没有行终止符;
。
return
a + b;
// is transformed by ASI into
return;
a + b;
所以你必须在return前面插入{
,不能在下一行。
参考:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return
在您的情况下,总会有一个非未定义的值 returned。
但在其他情况下,问题也可能是您从工厂执行 return null 或 undefined 值。
我写了一个angularjs
工厂如下
module.factory('LogService', function () {
function log(msg) {
console.log("Rahkaran:" + new Date() + "::" + msg);
}
return
{
log: log
};
});
但我一直收到这个错误
Provider 'LogService' must return a value from $get factory method
我用谷歌搜索了错误,但找不到任何解决方案。
巧合的是我把return
语句改成了这个
return{
log: log
};
错误消失了!!
{
在return
前面和下一行有区别吗?
这叫做自动分号插入
return 语句受自动分号插入 (ASI) 的影响。 return关键字和允许的表达式之间没有行终止符;
。
return
a + b;
// is transformed by ASI into
return;
a + b;
所以你必须在return前面插入{
,不能在下一行。
参考: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return
在您的情况下,总会有一个非未定义的值 returned。 但在其他情况下,问题也可能是您从工厂执行 return null 或 undefined 值。