我正在尝试使用gulp和bower向Angular应用添加需要新第三方模块的功能。在开发模式下一切都很好,但我添加的任何新模块都会在生产中产生臭名昭着的"Failed to instantiate module"
错误。我已经尝试禁用uglify构建步骤,它没有任何区别。简单地将新模块声明为依赖于我自己的模块足以产生错误。
与许多这些问题不同,我已经在使用字符串数组语法进行依赖,并且应用程序已经与各种其他模块一起运行。我发现我正在添加的内容和已经使用的其他库之间没有区别。
这是我目前尝试包括ngCookies
的尝试,但我和其他人做过同样的事情,例如。 ngFileUpload
具有相同的结果。
bower.json:
"dependencies": {
"jquery": "^2.1.4",
"angular": "^1.5.9",
"angular-sanitize": "^1.4.5",
"extras.angular.plus": "^0.9.2",
"moment": "^2.10.3",
"angular-ui-router": "^0.2.15",
...
"angular-cookies": "^1.5.9", // new
},
的index.html:
<!-- build:js js/lib.js -->
<!-- bower:js -->
<script src="/bower_components/jquery/dist/jquery.js"></script>
<script src="/bower_components/angular/angular.js"></script>
<script src="/bower_components/angular-sanitize/angular-sanitize.js"></script>
<script src="/bower_components/extras.angular.plus/ngplus-overlay.js"></script>
<script src="/bower_components/moment/moment.js"></script>
<script src="/bower_components/angular-ui-router/release/angular-ui-router.js"></script>
...
<script src="/bower_components/angular-cookies/angular-cookies.js"></script> // new
<!-- endbower -->
<!-- endbuild -->
核心模块声明:
(function () {
'use strict';
angular
.module('app.core', [
'ngAnimate',
'ngSanitize',
'blocks.exception',
'blocks.logger',
'blocks.router',
'ui.router',
'firebase',
'ngMap',
'ngplus',
'ngCookies', // new
]);
})();
minified / uglified js output:
app.js
function(){"use strict";angular.module("app.core",["ngAnimate","ngSanitize","blocks.exception","blocks.logger","blocks.router","ui.router","firebase","ngMap","ngplus","ngCookies"])}(), ...
lib.js
t.module("ngCookies",["ng"]).provider("$cookies", ...
控制台输出:
Error: [$injector:modulerr] Failed to instantiate module app due to:
[$injector:modulerr] Failed to instantiate module app.core due to:
[$injector:modulerr] Failed to instantiate module ngCookies due to:
[$injector:nomod] Module 'ngCookies' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
http://errors.angularjs.org/1.5.9/$injector/nomod?p0=ngCookies
答案 0 :(得分:1)
我可以看到你有不同版本的角度API加载和绑定在一起。理想情况下,您应该使用相同的版本引用角度API库。但在您的情况下,您的angular-animate
版本为1.4.8
,但其他角度API版本为1.5.8
。这可能是内部冲突。
相反,我建议您将所有角度API版本与1.5.8相同。这可以解决您的问题。