AngularJS集成UI Grid报错:[$injector:modulerr]等问题求助
我来帮你搞定这个头疼的报错!你遇到的Uncaught Error: [$injector:nomod] Module 'ui.grid' is not available!本质就是AngularJS找不到ui.grid模块,大概率是资源加载或依赖配置环节出了问题,咱们一步步排查修复:
第一步:确认UI Grid资源文件是否正确引入
一定要确保页面里加载了UI Grid的CSS和JS文件,而且顺序不能乱——先引入AngularJS核心,再引入UI Grid的JS,样式文件也要加上。示例代码如下:<!-- 先引入AngularJS核心库 --> <script src="angular.min.js"></script> <!-- 再引入UI Grid的JS文件 --> <script src="ui-grid.min.js"></script> <!-- 别忘了UI Grid的样式文件,否则表格会显示错乱 --> <link rel="stylesheet" href="ui-grid.min.css">同时要检查文件路径和文件名是否正确,比如别把
ui-grid.min.js写成uiGrid.min.js,路径写错也会导致文件加载失败。第二步:检查模块依赖注入是否正确
你的主模块(也就是报错里的appModule)必须把ui.grid作为依赖注入进去,注意模块名是点分隔的ui.grid,别写成横杠或者驼峰格式。正确的写法示例:// 这里必须把ui.grid放进依赖数组里 angular.module('appModule', ['ui.grid']) .controller('YourGridController', function($scope) { // 后续编写表格配置逻辑 });第三步:验证版本兼容性
UI Grid和AngularJS有版本匹配要求,比如UI Grid 3.x系列一般兼容AngularJS 1.2.x到1.7.x,如果你的AngularJS版本是1.8+,可能会出现兼容性问题,建议匹配对应版本的UI Grid。第四步:排查脚本冲突
如果上面几步都没问题,那可能是其他第三方库和UI Grid冲突了。可以先简化页面,只保留AngularJS和UI Grid的引入,写个最小可运行的表格示例测试,确认没问题后再逐步添加其他资源排查冲突点。
给你一个完整的最小可运行示例,你可以直接测试:
<!DOCTYPE html> <html ng-app="appModule"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="ui-grid.min.css"> <script src="angular.min.js"></script> <script src="ui-grid.min.js"></script> <style> .grid { height: 200px; width: 400px; } </style> </head> <body> <div ng-controller="GridDemoController"> <div ui-grid="gridOptions" class="grid"></div> </div> <script> angular.module('appModule', ['ui.grid']) .controller('GridDemoController', function($scope) { $scope.gridOptions = { data: [ { name: '张三', age: 28 }, { name: '李四', age: 32 }, { name: '王五', age: 25 } ] }; }); </script> </body> </html>
内容的提问来源于stack exchange,提问作者Vladyslav Plakhuta

