angular 提供程序错误 - 必须定义 $get 工厂方法

angular provider error - must define $get factory method

此咖啡脚本代码正在尝试创建 angular 提供程序,但我收到此消息:提供程序 'ItemsProvider' 必须定义 $get 工厂方法。

我设置了 $get 方法。知道发生了什么事吗?

'use strict'

    app = angular.module('logica-erp') 

    app.provider 'ItemsProvider', [ ->

        this.$get = ->
                return {

                }

    ]

无法加载此消息:

Error: [$injector:modulerr] Failed to instantiate module logica-erp due to:
[$injector:pget] Provider 'ItemsProvider' must define $get factory method.

编辑: 这是javascript生成的:

(function() {
  'use strict';
  var app;

  app = angular.module('logica-erp');

  app.provider('ItemsProvider', [
    function() {
      return this.$get = function() {
        return {};
      };
    }
  ]);

}).call(this);

CoffeeScript 引入了语法糖衣,读者和行家都可能不太理解。将它编译成 JS 以查看发生了什么总是一个好主意。隐性 return 似乎是我实践中最大的麻烦制造者。

在这种情况下,CS 代码被编译成这样

app.provider('ItemsProvider', [
  function() {
    return this.$get = function() {
      return {};
    };
  }
]);

此处提供者构造函数 return 是 this.$get 的值(一个函数)而不是 this 对象。构造函数不应该 return 任何东西(除了极少数情况下它应该):

app.provider('ItemsProvider', [
  function() {
    this.$get = function() {
      return {};
    };
  }
]);

当心箭头。