【问题标题】:Error: [$injector:strictdi] is not using explicit annotation and cannot be invoked in strict mode错误:[$injector:strictdi] 没有使用显式注释,不能在严格模式下调用
【发布时间】:2017-08-16 12:11:40
【问题描述】:

升级到 angular-ui-router 1.0.5(从 1.0.0)后,我得到以下信息:

Error: [$injector:strictdi] function(searchScope) is not using explicit annotation and cannot be invoked in strict mode

http://errors.angularjs.org/1.6.5/$injector/strictdi?p0=function(searchScope)

我从here 了解到,这意味着我

启用严格模式,以检测您忘记使用 $inject 或数组符号的位置,以确保您的代码可以安全 缩小。

这应该如何帮助我找到错误?是在定义searchScope 中还是searchScope 本身错误地注入了某个地方?我怎样才能找到哪里?

它的定义是

.factory('searchScope', ['$location', '$rootScope', 'Query', '$http', '$stateParams', 'language', '$state',
function($location, $rootScope, Query, $http, $stateParams, language, $state) {

(角度 1.6.5)

有什么建议吗?

编辑

SearchScope 是我在很多服务和指令中使用的一项服务。我检查了所有使用它的组件,它们的所有定义看起来像

.directive('foodirective', ['searchScope', function (searchScope) {

这对我来说似乎很正确......

【问题讨论】:

  • 你的意思是1.6.5吗?\
  • 你在文件开头加了'use strict';吗?
  • 可能您的某个注入服务没有使用 $inject 或数组表示法。
  • UI Router 中没有 searchScope 之类的东西,所以不清楚问题与它有什么关系。问题出在注入 searchScope 的某些函数中。只需在您的代码库中搜索它。你是唯一能做到这一点的人。
  • 是的,sry 1.6.5。

标签: angularjs


【解决方案1】:

由于原始评论者从未在此处声明他的观点是@Estus Flask 的正确答案:

这可能意味着注入 searchScope 的函数在某些路由控制器或解析器中被调用,而这些路由控制器或解析器由于某种原因之前没有被调用。

这帮助我很快找到了错误的根源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2016-01-27
    • 2016-08-09
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多