grunt 压缩代码后,部署发布出现下面的错误:
Error: [$injector:unpr] Unknown provider: aProvider <- a
http://errors.angularjs.org/1.2.22/$injector/unpr?p0=aProvider%20%3C-%20a
at http://192.168.129.105/scripts/97d82a51.vendor.js:3073:20
at http://192.168.129.105/scripts/97d82a51.vendor.js:3837:19
at Object.c [as get] (http://192.168.129.105/scripts/97d82a51.vendor.js:3797:59)
at http://192.168.129.105/scripts/97d82a51.vendor.js:3839:23
at c (http://192.168.129.105/scripts/97d82a51.vendor.js:3797:59)
at d (http://192.168.129.105/scripts/97d82a51.vendor.js:3808:62)
at Object.e [as instantiate] (http://192.168.129.105/scripts/97d82a51.vendor.js:3814:96)
at http://192.168.129.105/scripts/97d82a51.vendor.js:4464:38
at http://192.168.129.105/scripts/97d82a51.vendor.js:8874:29
at k (http://192.168.129.105/scripts/97d82a51.vendor.js:5157:57)
错误原因: 压缩以后,没有告诉angular如何注入,因此angular无法进行动态注入
解决办法:
1.编写所有controller/service/xx的时候用数组注入(推荐这个方式)
angular.module('MainApp').directive('about', ['$rootScope',
function ($rootScope) {
}])
2.在写完controller/service/xx以后编写注入提示
AboutController.$inject = ['$scope'];
本文最
牛叉的地方来了:
光是知道如何解决这个错误是不够的,压缩代码以后,
我们需要知道哪里代码没有认真编写,从而造成了这个错误。
解决流程:
第一步 修改Grunt编译脚本Gruntfie.js,加入
uglify:{
options : {
beautify : true,
mangle : true //混淆变量名
}
},
让代码构建的时候混淆变量名,但是不破坏代码可读性
第二步 修改angular.js 找到function annotate(fn) 加入console.warn提示
function annotate(fn) {
var $inject,
fnText,
argDecl,
last;
if (typeof fn === 'function') {
if (!($inject = fn.$inject)) {
$inject = [];
if (fn.length) {
console.warn("此函数没有注入注解,将导致编译后运行错误:",fn);
这下编译以后再发布运行,除了能看到Unknown provider错误,还能马上看到哪里的代码出现了问题。
====================
Enjoy It!
====================
Tobato 2014-09-14
====================
分享到:
相关推荐
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
基于java的网吧管理系统答辩PPT.pptx
基于java的基于SSM架构的网上书城系统答辩PPT.pptx
tornado-6.1-cp37-cp37m-win32.whl
c语言气泡排序、插入排序、选择排序、快速排序、希尔排序、堆排序、合并排序_SortAlgorithm.zip
Keyboard Maestro 11.0.3_macwk.dmg
基于微信小程序的鲜花销售微信小程序答辩PPT.pptx
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
tornado-6.2b1-cp39-cp39-musllinux_1_1_x86_64.whl
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
tornado-6.1b2-cp38-cp38-manylinux2014_aarch64.whl
基于java的土家风景文化管理平台答辩PPT.pptx
jira安装包
基于java的机场网上订票系统答辩PPT.pptx
小区物业管理系统 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
yolo算法-金属-纸张-硬纸板垃圾数据集-13409张图像带标签-金属-纸张-硬纸板-塑料-其他-烟蒂-食物-玻璃.zip;yolo算法-金属-纸张-硬纸板垃圾数据集-13409张图像带标签-金属-纸张-硬纸板-塑料-其他-烟蒂-食物-玻璃.zip;yolo算法-金属-纸张-硬纸板垃圾数据集-13409张图像带标签-金属-纸张-硬纸板-塑料-其他-烟蒂-食物-玻璃.zip
项目介绍: 系统模块主要包括;用户、考试信息、考场信息、试卷、试题、考试等管理功能 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
Python脚本运行环境搭建所需要的资源包