AngularJS 错误: $injector:unpr Unknown Provider

在使用 AngularJS 进行开发时,经常会遇到 "$injector:unpr" 的错误信息。这个错误通常表示注入器无法找到相关的服务或依赖项,而有很多原因可能导致这个问题出现。在本文中,我们将探讨这个错误的一些常见原因,并提供解决方案和示例代码。

原因及解决方案

1. 服务名称拼写错误

错误信息通常会告诉你未知的服务名称,如果服务名称拼写错误,注入器就无法找到它。确保你正确地拼写了服务名称,包括大小写和空格。

-- --------
-------------------------------------------- ---------------- ------ --------- -------

-- -------
-------------------------------------------- ---------------- ------ ---------- -------

2. 服务没有被注册

当你创建自己的服务时,确保它已经在应用程序中注册。你可以通过 angular.module().service() 函数来注册一个服务。如果你的服务没有被注册,注入器就会报错。

-- -------
-------------------------------------------- ---------------- ------ ---------- -------

-- ----
-------------------------------------------- ---------- -------

3. 依赖项没有被注入

确保你的服务所依赖的其他服务已经被注入。如果一个服务需要依赖其他服务,你需要在控制器或者其他服务中注入这些依赖项。

-- --------
-------------------------------------------- --------------- -------

-- -----
-------------------------------------------- ---------------- ------ ---------- -------

4. 模块没有被引用

确保你的模块已经被正确地引用。如果一个服务属于另一个模块,你需要在当前模块中引用它。

-- -------
-------------------------------------------------- ---------- -------

-- ----
----------------------- ------------------------------------- ---------------- ---------- -------

示例代码

下面是一个使用自定义服务的示例代码。其中,userService 依赖 $http 服务来获取用户数据,而 $http 服务又依赖于 AngularJS 内置的 $httpBackend 服务:

----------------------- ---
----------------------- --------------- -
  ------------- - ---------- -
    ------ ------------------------
  --
--
--------------------- ---------------- ------------ -
  ---------------------------------------------- -
    ------------ - --------------
  ---
---

如果 $httpBackend 没有被正确地注入,或者 userService 依赖项没有被正确地注入,就会出现 "$injector:unpr" 的错误信息。确保你的服务名称和依赖项都正确地拼写和注入,就可以避免这个问题发生。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/26237