【问题标题】:Failed to instantiate module in AngularJS due to missing (loaded) provider由于缺少(加载)提供程序,无法在 AngularJS 中实例化模块
【发布时间】:2019-08-23 05:31:50
【问题描述】:

使用 AngularJS 处理一个旧项目,并且由于“未知提供者”似乎得到了很好的旧“无法实例化模块”错误,但有趣的是提供这个“缺失”提供者的模块已经已加载,并且 Provider 是模块的一部分。 (我知道这一点,因为主模块也使用相同的模块/提供程序)

(依赖树)

  Main Module
    - API Module
    - SubModule   <-- Fails when this is added
       - API Module

主模块加载使用 [custom-built] API 模块,我加载到主模块中的子模块也使用 API 模块,但是当我添加子模块时它都失败了,即使提供程序 (来自 API 模块)完美运行。

主模块再次使用 API 中的提供程序,所以我知道提供程序已加载的另一个原因。

我已经在两个模块中使用了依赖顺序,并检查了模块加载的顺序,一切看起来都井然有序。

关于什么可能引发此错误的任何想法?

【问题讨论】:

    标签: angularjs angular-module angular-providers


    【解决方案1】:

    弄清楚它是什么。这一切都来自于重构有效的现有应用程序代码。发生的事情是我的 Provider 实际上正在加载一个工厂。原来是这样的

    mymodule.factory('substuff', function() {....});

    重构也发生了变化,是......

    import SubStuffProvider from 'app/providers/SubStuff.provider'
    
    ....
    mymodule.provider('substuff', SubStuffProvider);
    

    但是,我正在导入的项目正在导出 Factory(即使该文件被标记为 substuff.provider.js)而不是我认为的 Provider,所以看起来它正在加载一个带有工厂的提供程序,我认为这是 AngularJS 的错误加载顺序。

    无论如何,修复我的imported 文件以将“Provider”文件加载为工厂,正如它应该做的那样,它可以工作。

    迫不及待想把这个东西移植到 Angular 6。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      • 2017-06-17
      • 2017-12-11
      • 2014-05-30
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多