admin管理员组文章数量:1564649
分享一个卡了我好几个小时的报错。
报错信息
Error: [ng:areq] http://errors.angularjs/1.3.10/ng/areq?p0=userRequestController&p1=not%20aNaNunction%2C%20got%20undefined
错误代码
以上错误是我在自定义一个angular路由时出现的,之前代码如下:
.state('userRequestController', {
url: "/ossapp/zk/synchronized.html",
templateUrl: "views/request/userRequest.html",
params: {reqUrl: null, backUrl: null},
data: {pageTitle: '同步开关'},
controller: "userRequestController",
resolve: {
deps: ['$ocLazyLoad', function ($ocLazyLoad) {
return $ocLazyLoad.load([{
insertBefore: '#ng_load_plugins_before',
files: [
'js/scripts/modules/request/userRequestController.js'
]
}]);
}]
}
})
官方错误解释
去angularjs错误信息文档查了下(文档地址),给出的错误提示如下:
DESCRIPTION
AngularJS often asserts that certain values will be present and truthy using a helper function. If the assertion fails, this error is thrown. To fix this problem, make sure that the value the assertion expects is defined and truthy.翻译成中文:
描述
AngularJS通常会断言某些值会出现以确保引用的函数是有用的。要想解决这个问题,请确保断言的值被正确的定义与引用。
排错阶段:
- 查看引用的controller与html模板地址正确无误
- 查看查看页面及控制器引用的名称无误
- 确保使用的所有依赖都没有引用错误
- 。。。
错误找到这里,页面中的文字已经能够正确的显示出来,但是Error: [ng:areq]
依然存在,虽然不影响页面但是这个错误依然在控制台很刺眼(如果当时报的是个警告可能我就不管了)。
再往后就是排查了下引用的controller,引用无误,但是当我把路由中对控制器引用的代码注释掉发现错误消失了。突然明白
如果在路由中引用了控制器而页面中没有使用控制器,angularjs会检查这种这种引用从而断言这是一个无效的引用,从而抛出一个Error: [ng:areq]
的错误。
也就是说,如果页面中暂时没有使用controller就先不要在路由中引用。在路由中注释掉controller: “userRequestController”即可。
解决了这个莫名其妙的bug,真的感觉浑身酸爽,继续撸代码~~
END
版权声明:本文标题:ng:areq--angular断言错误 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1727341828a1109508.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论