使用ng-strict-di时的错误快照开发
我正在开发meteor中的项目,如果我在开发中不使用ng-strict-di它可以正常工作但是在生产中(在构建之后)我面临以下问题:
生产流星错误
开发错误:
错误columnNumber:12 fileName: “本地主机:3007 /包/ modules.js哈希= f352b06ef868d8ef612a0e02d3fc1da778e4f6d6” lineNumber:895消息:“[$ injector:strictdi] AdminCtrl未使用 显式注释,不能严格调用 模式\ nerrors.angularjs.org/1.6.8/$injector/strictdi?P0 = AdminCtrl” 堆: “minErr /< @localhost:?3007 /包/ modules.js散列= f352b06ef868d8ef612a0e02d3fc1da778e4f6d6:895:12 \ nannotate @本地:3007 /包/ modules.js散列= f352b06ef868d8ef612a0e02d3fc1da778e4f6d6:5039:17 \ ninjectionArgs @本地:3007 / ?包/ modules.js哈希= f352b06ef868d8ef612a0e02d3fc1da778e4f6d6:5833:21 \ ninvoke @本地:3007 /包/ modules.js哈希= f352b06ef868d8ef612a0e02d3fc1da778e4f6d6:5868:18 \ N $ controllerInit @本地:3007 /包/ modules.js哈希= f352b06ef868d8ef612a0e02d3fc1da778e4f6d6:11846:24 \ nnodeLinkFn @本地:3007 /包/ modules.js散列= f352b06ef868d8ef612a0e02d3fc1da778e4f6d6:10709:35 \ ncompileTemplateUrl /< @localhost:?3007 /包/ modules.js散列= f352b06ef868d8ef612a0e02d3fc1da778e4f6d6:11117:13 \ nprocessQueue @localhost:3007 /包/ modules.js散列= f352b06ef868d8ef612a0e02d3fc1da778e4f6d6:17939:37 \ nscheduleProcessQueue /< @localhost:?3007 /包/ modules.js散列= f352b06ef868d8ef612a0e02d3fc1da778e4f6d6:17987:27 \ n $的消化@本地:3007 /包/ modules.js?哈希= f352b 06ef868d8ef612a0e02d3fc1da778e4f6d6:19122:15 \ n $的申请@本地:3007 /包/ modules.js哈希= f352b06ef868d8ef612a0e02d3fc1da778e4f6d6:19419:13 \ nbootstrapApply @本地:3007 /包/ modules.js哈希= f352b06ef868d8ef612a0e02d3fc1da778e4f6d6:2737:9 \ ninvoke @本地主机:3007 /包/ modules.js散列= f352b06ef868d8ef612a0e02d3fc1da778e4f6d6:5876:16 \ ndoBootstrap @本地:3007 /包/ modules.js散列= f352b06ef868d8ef612a0e02d3fc1da778e4f6d6:2735:5 \ nbootstrap @本地:3007 /包/ modules.js? hash = f352b06ef868d8ef612a0e02d3fc1da778e4f6d6:2755:12 \ nangularInit @ localhost:3007 / packages / modules.js?hash = f352b06ef868d8ef612a0e02d3fc1da778e4f6d6:2640:5 \ nangular.js / proto:Object {...}
生产(建设)
错误:[$ injector:unpr]未知提供者:tProvider< - t errors.angularjs.org/1.6.8/$injector/unpr?p0=tProvider%20%3C-%20t 堆栈跟踪: R /< @localhost:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:11:7828? 。他/ B $注射器< @localhost:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:11:30527 R 6本地主机:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:11:29436 他/ E< @localhost:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:11:30610 R 6本地主机:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:11:29436 我@本地:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:11:29741 一个@本地:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:11:29962 吨@本地:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:12:25404 2P @本地主机:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:12:11871 HT /< @localhost:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:12:17718 ü@本地:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:13:15438 升/< @localhost:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:13:15884 $消化@本地:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:13:21599 $适用@本地:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:13:23411 T @家本地主机:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:11:16603 一个@本地:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:11:30066 一个@本地:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:11:16522 LT @本地:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:11:16810 CT @本地:3008 / 7084ab3720bb9d2b53502cd2b81dce478c095b4c.js meteor_js_resource =真:11:16046 angular.js /
答案 0 :(得分:1)
您正在以strict dependency injection模式启动Angular。这会导致angular在遇到未明确注释的依赖项时抛出异常。这是一种强制开发人员防止依赖关系名称缩小的方法。
如果app元素上存在此属性,则注入器将为 以“严格 - 迪”模式创建。这意味着应用程序将失败 调用不使用显式函数注释的函数(和 因此不适合缩小),如依赖性中所述 注射指南和有用的调试信息将有助于跟踪 这些错误的根源。
错误告诉您没有明确注释您的AdminCtrl
- 控制器。要解决此问题,您的代码应该类似于:
angular.module('app').controller('AdminCtrl', ['firstDependency', 'secondDependency',
function(firstDependency, secondDependency){
// Controller body
}]);
或使用$inject
:
angular.module('app').controller('AdminCtrl', AdminCtrl);
AdminCtrl.$inject = ['firstDependency', 'secondDependency'];
function AdminCtrl(firstDependency, secondDependency){
// Controller body
}
如果您使用grunt,gulp或webpack等构建工具以及ngAnnotate
包,则可以自动为您完成第二种方法。