由于缺少(已加载)提供程序,因此无法在AngularJS中实例化模块

时间:2019-04-02 00:52:27

标签: angularjs angular-module angular-providers

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

(依赖关系树)

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

主模块加载使用[定制的] API模块,我加载到主模块中的子模块也使用API​​模块,但是当我添加子模块时,即使提供者(来自API模块)。

同样,主模块正在使用API​​中的提供程序,所以我知道提供程序已加载的另一个原因。

我在两个模块中都采用了依赖顺序,并检查了模块的加载顺序,而且看起来都是按顺序进行的。

有什么想法会引发此错误?

1 个答案:

答案 0 :(得分:0)

弄清楚它是什么。所有这些都是通过重构现有的应用程序代码来实现的。发生的事情是我的提供者实际上正在加载工厂。曾经是

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

重构也被更改了...

import SubStuffProvider from 'app/providers/SubStuff.provider'

....
mymodule.provider('substuff', SubStuffProvider);

但是,我导入的项目正在导出 Factory (即使文件标记为substuff.provider.js),而不是我认为的 Provider 。看来它正在使用Factory加载提供程序,我认为AngularJS的加载顺序错误。

无论如何,应该修复我的import文件,以将“ Provider”文件作为工厂加载,并且应该可以正常工作。

迫不及待想将其移植到Angular 6。