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
====================
分享到:
相关推荐
rpm -qi <package-name> ``` 例如: ``` rpm -qimplayer ``` 3. **查询未安装的 rpm 包:** - 查看 rpm 包的信息而不安装: ``` rpm -qpipackage-file.rpm ``` 例如: ``` rpm -qpimplayer-1.0pre7try...
std::cout << "驱动器 " << driveStr << ": 未知类型(" << driveType << ")" << std::endl; break; } } } return 0; } ``` 在这个例子中,我们遍历了所有可能的驱动器,对每个存在的驱动器调用`GetDriveType`...
std::cout << "驱动器 " << drive << ": 类型未知" << std::endl; break; case DRIVE_NO_ROOT_DIR: std::cout << "驱动器 " << drive << ": 无根目录" << std::endl; break; case DRIVE_REMOVABLE: std::cout...
riscv32-unknown-elf-gcc 学习riscv 的必备工具,github 下载太慢,无需编译
Maven 是一个流行的构建自动化工具,它可以帮助开发者自动完成项目的编译、测试、打包、部署等任务。 Tomcat 是一个流行的 Web 服务器,Maven 提供了一个插件 tomcat8-maven-plugin 来实现 Maven 项目与 Tomcat ...
本文将深入探讨使用Ubuntu16操作系统,通过crosstool-ng构建的针对ARM Cortex-A8处理器的交叉编译工具链"arm-unknown-linux-gnueabi.tar.gz"。这个工具链允许开发者在x86架构的主机上编译出适用于ARM架构的目标代码...
标题 "riscv64-unknown-elf-gcc-8.3.0-2019.08.0-x86_64-linux-ubuntu14.tar.gz" 暗示了这是一个针对RISC-V架构的交叉编译工具链,用于在64位Linux系统(基于Ubuntu 14)上构建未知目标系统的ELF二进制文件。...
《RISC-V架构下的交叉编译工具链:riscv64-unknown-elf-gcc-8.3.0-2019.08.0-x86_64-linux-centos6详解》 在计算机科学领域,尤其是嵌入式系统开发中,交叉编译是一种常见的技术,它允许我们在一个平台上编译出适用...
错误信息:“Unknown provider: $scopeProvider <- $scope <- DutylogService”表明尝试注入的$scope服务无法被找到。这是因为$scope对象只存在于控制器的作用域内,它不适用于服务层,因为在服务层中没有与之对应的...
default: std::cout << "Unknown"; break; } std::cout << std::endl; delete[] config; } int main() { SC_HANDLE scmHandle = OpenSCManager(nullptr, nullptr, SC_MANAGER_ALL_ACCESS); if (scmHandle ==...
GTX示例工程 <?xml version="1.0" encoding="UTF-8"?... <spirit:name>unknown</spirit:name> <spirit:version>1.0</spirit:version> MODELPARAM_VALUE.gt0_pll1_rxout_div">1</spirit:configurableElementValue>
在开发基于Spring Boot和Spring Cloud的应用程序时,经常会遇到各种挑战,其中之一就是“unknown”问题。这通常出现在IDEA环境中,意味着系统无法正确识别或解析某些依赖或配置。本篇文章将详细探讨这个问题,并提供...
Client address: <unknown> ORA-609 : opiodr aborting process unknown ospid (4116_6104) 这时候朋友怀疑是不是监听器配置问题,就把原先的监听器删除重建了下,问题依然。 网上有个解决TNS-12535错误的案例...
标题 "x86_64-unknown-linux-gnu-9.2.0.tar.gz" 暗示了这是一个针对x86_64架构的Linux系统(通常为64位)的GCC(GNU Compiler Collection)交叉编译器的打包文件,版本号为9.2.0。这种工具允许开发者在非目标平台...
标题中的“clangd/libclang-11.0.0-x86_64-unknown-linux-gnu.tar.bz2”是一个软件包,它包含了用于C和C++编程语言的Clang工具集的一部分,特别是libclang库。libclang是Clang项目的一个核心组件,提供了C API,允许...
std::cout << "Unknown"; } ``` ##### 4. `char` - **用途**:用于声明字符类型的变量。 - **示例**:`char c = 'A';` ##### 5. `const` - **用途**:用于定义常量,即其值在程序运行期间不可更改。 - **示例**...
std::wcout << "可用空间: " << freeBytesAvailable.QuadPart / (1024 * 1024) << " MB\n"; std::wcout << "总空间: " << totalBytes.QuadPart / (1024 * 1024) << " MB\n"; std::wcout << "空闲空间: " << ...
std::cout << timeString.toStdString() << " - " << context.file << "(" << context.line << ") - " << msg.toStdString() << std::endl; } ``` 在这个示例中,我们创建了一个名为`customMessageHandler`的函数...
riscv32-unknown-elf-gcc交叉编译工具链,基于riscv-gnu-gcc进行编译。 版本8.2.0. 工具链大小为340M,超出了240M的限制,分成了2个资源进行上传,需要将第一部分下载,然后放一起才可以解压。
首先,我们需要包含`windows.h`头文件,然后使用`GetDriveType`函数传入驱动器号(通常是字母A到Z,代表从A盘到Z盘的物理驱动器)来获取类型。例如: ```cpp #include <windows.h> #include <iostream> int main()...