Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关闭AngularJS中的隐式依赖项注入_Javascript_Angularjs_Dependency Injection - Fatal编程技术网

Javascript 关闭AngularJS中的隐式依赖项注入

Javascript 关闭AngularJS中的隐式依赖项注入,javascript,angularjs,dependency-injection,Javascript,Angularjs,Dependency Injection,我正在调试一个大型ish AngularJS项目中缺少的提供程序。错误是缺少“dProvider”。它只发生在缩小的代码版本上,这是有意义的,因为我们没有“d”控制器、工厂或服务。我很难找到导致这种情况的原因,在缩小的代码中搜索类似函数(a、b、c、d)的内容,但还没有得到任何结果。有没有办法在Angular中强制只进行显式依赖项注入?似乎如果我能强制这样做,我就能在开发环境中发现问题。哇,太糟糕了 它可能是这样定义的控制器/服务 app.controller('myCtrl', functio

我正在调试一个大型ish AngularJS项目中缺少的提供程序。错误是缺少“dProvider”。它只发生在缩小的代码版本上,这是有意义的,因为我们没有“d”控制器、工厂或服务。我很难找到导致这种情况的原因,在缩小的代码中搜索类似
函数(a、b、c、d)
的内容,但还没有得到任何结果。有没有办法在Angular中强制只进行显式依赖项注入?似乎如果我能强制这样做,我就能在开发环境中发现问题。

哇,太糟糕了

它可能是这样定义的控制器/服务

app.controller('myCtrl', function($scope){
     ...
})
而不是更安全的

app.controller('myCtrl', ['$scope', function($scope){
    ...
}])

我没有一个简单的答案,但也许你可以搜索函数(如果你运气好的话,你会找到罪魁祸首。如果类似的事情不起作用,源代码映射可能就是解决办法。

我最终选择性地注释掉了html的部分内容,直到我确定问题发生的地方。原来是一个问题。

是的!因为你可以关闭隐式依赖注入

从代码中,使用
strictDi
config属性:

angular.bootstrap(document, ['myApp'], {
    strictDi: true
});
或者从模板中,使用
ng strict di
指令:

<html ng-app="myApp" ng-strict-di>


在缩小过程中尝试生成一个源映射文件-这样你就可以确定缺少的提供者的名称。如果你忘记最小安全注射,可能会发生这种情况。如果你没有“d”服务,听起来你的参数好像被弄乱了。我没有想到源映射。这是个好主意,但请注意到目前为止,使用grunt生成源映射可能超出了我的能力范围。我理解为什么会出现这样的错误,我只是很难找到它。我也不相信源映射会有帮助,因为堆栈跟踪只列出angular.js中的函数,而不是我的缩小代码。谢谢,是的,这就是我所知道的n查找。该参数或与定义的依赖项数量不同的函数参数…您还可以美化缩小的代码(例如,使用jsbeautifier.org/)‎) 这可能有助于您确定导致问题的代码行。不过,如果我没记错的话,这个错误在您自己的代码中没有给出一行:(是的,这是主要问题。我可以从我自己的代码的缩小版本获得解决方案。但它只列出angular.js的内容。我很高兴通知您!