Unknown provider: tProvider <- t 对于很多Angular 1.x 的使用者来说,是非常头疼的一件事情,因为使用者根本不知道原因在哪里。

本文总结了迄今为止所有导致这一个问题的可能原因,希望大家遇到此问题时,不要慌!跟着下面内容一步步排查:

问题描述:

Unknown provider 一般是由于无法解析注入的一个依赖所导致的。原因一般有如下这几种可能:

1. 依赖没有定义

angular.module('myApp', [])
.controller('MyController', ['myService', function (myService) {// Do something with myService
}]);

上述代码,由于之前没有定义myService这个依赖,会报错 [$injector:unpr] Unknown provider。如果发现有没定义的依赖,首先要提前定义好这个依赖。

angular.module('myApp', [])
.service('myService', function () { /* ... */ })
.controller('MyController', ['myService', function (myService) {// Do something with myService
}]);

2. 重新使用了angular.module

angular.module('myModule', []).service('myCoolService', function () { /* ... */ });angular.module('myModule', [])// myModule has already been created! This is not what you want!.directive('myDirective', ['myCoolService', function (myCoolService) {// This directive definition throws unknown provider, because myCoolService// has been destroyed.}]);

上述代码中,重复使用了angular.module('myModule', []),会让angular重新定义myModule这个模块,导致报错。angular.module('myModule', []) 这个语法一般是再次定义module,为了避免这个问题,在定义module之后直接使用angular.module('myModule')或者使用一个变量代替之即可。

angular.module('myModule', []);.service('myCoolService', function () { /* ... */ });angular.module('myModule').directive('myDirective', ['myCoolService', function (myCoolService) {// This directive definition does not throw unknown provider.}]);或者var app =  angular.module('myModule', []);
app.service('myCoolService', function () { /* ... */ });
app.directive('myDirective', ['myCoolService', function (myCoolService) {// This directive definition does not throw unknown provider.}]);

3. 把一个controller当依赖注入到另外一个controller中

angular.module('myModule', [])
.controller('MyFirstController', function() { /* ... */ })
.controller('MySecondController', ['MyFirstController', function(MyFirstController) {// This controller throws an unknown provider error because// MyFirstController cannot be injected.
}]);

其实如果要实例化controller,可以使用$controller服务(后续博客会更新)

4. 把$scope注入到不是controller或者directive的组件中

angular.module('myModule', [])
.service('MyController', ['$scope', function($scope) {// This controller throws an unknown provider error because// a scope object cannot be injected into a service.
}]);

发生这个情况,也很好排查,只要牢记,只有controller和directive才能注入$scope作为依赖。

5. 使用angular压缩版导致报错

可以使用ngStrictDi

好了,希望本文能帮助到大家,遇此问题千万别慌了神!

Angular $injector:unpr Unknown provider 问题原因汇总相关推荐

  1. webpack打包angularjs后出现Angular $injector:unpr Unknown provider的错误及解决

    文章目录 问题 原因 解决 附 问题 一个angularjs1.x的历史项目,webpack3做的打包,打出来的包一起有几十M,因为一直内网运行,虽然包大了点,但是还能够接受. 因为最近有一些客户对这 ...

  2. [ISSUE]angularjs resolve: $injector:unpr] Unknown provider:

    使用框架 ionic,使用resolve做数据共享 http://learn.ionicframework.com/formulas/sharing-data-between-views/# 出现错误 ...

  3. 关于angular模态框遇到的坑 Error: [$injector:unpr] Unknown provider

    记录今天在修改angular的模态框遇到的问题: AngularJs的UI组件ui-Bootstrap:Tooltip和Popover 先说tooltip,tooltip有三种使用方式: (1) ui ...

  4. [$injector:unpr] Unknown provider:--angular.module()函数解答

    在使用angularjs开发项目过程中,无疑遇到这个问题是最棘手的问题: ionic.bundle.js:26799 Error: [$injector:unpr] Unknown provider: ...

  5. angular.js:13920 Error: [$injector:unpr] Unknown provider: $scopeProvider - $scope - testServe

    angular.js:13920 Error: [$injector:unpr] Unknown provider: $scopeProvider <- $scope <- testSer ...

  6. AngularJS报错:[$injector:unpr] Unknown provider: $templateRequestProvider

    在页面中由上到下引用了: angular.js angular-route.js 创建model的时候也写明了依赖: var someApp = angular.module('someApp',[' ...

  7. Error: [$injector:unpr] Unknown provider: $scopeProvider - $scope -错误解决方案

    做项目的时候因为懒,在写service时直接复制了控制器的依赖注入,之后就出现了这个错误,查了半天. 解决其实很简单,删除掉service中注入的$scope即可. 转载于:https://www.c ...

  8. C语言unprinctable错误,“未捕获错误:[$injector:unpr]”,部署后角度

    I have a fairly simple Angular application that runs just fine on my dev machine, but is failing wit ...

  9. Error: [$injector:unpr] AngularJS 注入报错

    出现错误 "Error: [$injector:unpr] http://errors.angularjs.org/1.2.9/$injector/unpr?p0=contentCatego ...

最新文章

  1. node java php_服务端I/O性能:Node、PHP、Java、Go的对比
  2. 每日一皮:这年头没点绝活连洗车都不行...
  3. TableView的集合
  4. 与用户登录shell相关的文件/etc/profile,~/bashrc等浅析
  5. Java设计链表(不带头结点的单链表)
  6. SpringBoot笔记-注册后发送邮箱点击激活(异步)
  7. hello 博客园!
  8. 使用可重启AD DS 整理活动目录数据库
  9. uni-app的生命周期
  10. pos机显示服务器异常,POS机刷卡出现异常不要慌!一定要按步骤处理问题!
  11. 国外博士论文下载网址
  12. 搭建excel在线编辑服务器,开源免费!自动动手搭建一款更加强大的在线Excel工具...
  13. java fadein_原生JS实现 fadeIn / fadeOut 方法
  14. 2016年民营企业500强榜单(全国工商联发布)
  15. 华为交换机一端口网线一直拔插,导致端口被关闭锁死,网线接了灯不会亮
  16. NIOS II 软核中EPCS配置芯片的存储操作
  17. Halcon 初体验
  18. 电子采购平台解决方案:构建企业采购管理系统业务架构、应用场景
  19. 关于java文件删除file.delete()无法删除文件的处理办法
  20. 有道云笔记无法同步,网易云音乐无法登入

热门文章

  1. windows 10 电脑必备软件
  2. 1.5Go语言的基本数据类型
  3. AnyPi智能语音音箱方案 智能蓝牙WIFI音箱方案开发 DuerOS及Alexa平台
  4. 7080mt安装linux网卡驱动,Intel英特尔PRO100/1000/10GbE系列网卡驱动
  5. bzoj2754JZOJ2834【SCOI2012】喵星球上的点名 AC自动机+STL
  6. 给到工作的你诗和远方~
  7. c语言字符统计2sdut,山东理工大学SDUT - ACM OJ 题: Python代码 及分析
  8. C语言显示无法添加两个指针,【C语言】两个指针(地址)相减
  9. EXCEL干货(1-1): 基本表格操作
  10. 猿圈 题库_百度传课携手猿圈 接入题库及测评服务