我遇到一个问题,Angular JS收到错误:Uncaught Error:[$ injector:modulerr].我的JS文件看起来
angular.module('MyApp', ['ngRoute']);
angular.module('MyApp',['ngResource']);
function TwitterCtrl($scope,$resource){
}
Run Code Online (Sandbox Code Playgroud)
我还包括angular-route-js
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular-route.min.js">
Run Code Online (Sandbox Code Playgroud)
Angular文档说问题是http://docs.angularjs.org/api/ngRoute
我想将这个https://gist.github.com/nblumoe/3052052包装在一个模块中.我刚刚将代码从TokenHandler更改为UserHandler,因为在每个api请求中我都想发送用户ID.
但是我在firebug控制台中找不到模块UserHandler.这是我的完整代码:http://dpaste.com/1076408/
相关部分:
angular.module('UserHandler').factory('UserHandler', function() {
var userHandler = {};
var user = 0;
/...
return userHandler;
});
angular.module('TicketService', ['ngResource', 'UserHandler'])
.factory('Ticket', ['$resource', 'UserHandler',
function($resource, userHandler){
var Ticket = $resource('/api/tickets/:id1/:action/:id2',
{
id1:'@id'
},
{
list: {
method: 'GET'
}
});
Ticket = userHandler.wrapActions( Ticket, ["open", "close"] );
return Ticket;
}]);
Run Code Online (Sandbox Code Playgroud)
知道为什么会这样吗?怎么解决?
我最近一直在研究JavaScript,一切都很好,直到我在IE11中打开我的页面.按照Mozilla的网站 .forEach,从IE9支持.
这是我得到的错误.
SCRIPT438:对象不支持属性或方法'forEach'
这是代码.
var link1 = document.querySelectorAll("nav a");
var textbox = document.getElementById("OutputWindow");
link1.forEach(function (element) {
textbox.innerHTML += "<br/>" + element + "\n";
element.onclick = function () {
alert("Hello!");
console.log("hello!");
confirm("Hello!");
};
});
Run Code Online (Sandbox Code Playgroud)
我尝试了polyfill,但令我高兴的Array是,forEach在IE11中有一个.
然后我出错了?
PS:这在Chrome中运行良好.
我收到一个错误记录到控制台:
GET http://localhost:3000/js/lib/angular/MINERR_ASSET 404 (Not Found)
Run Code Online (Sandbox Code Playgroud)
我看到了这篇文章,它说这是不包含ngRoute模块的结果,但我做到了!
公共/ JS/app.js:
window.app = angular.module('mean-blog-seed', ['ngCookies', 'ngResource', 'ui.bootstrap', 'ngRoute', 'mean-blog-seed.controllers', 'mean-blog-seed.services']);
Run Code Online (Sandbox Code Playgroud)
然后我有一个引用angular-route.js的玉文件:
script(type='text/javascript', src='js/lib/angular/angular.min.js')
script(type='text/javascript', src='js/lib/angular-route/angular-route.min.js')
script(type='text/javascript', src='js/lib/angular-cookies/angular-cookies.min.js')
script(type='text/javascript', src='js/lib/angular-resource/angular-resource.min.js')
script(type='text/javascript', src='js/lib/angular-bootstrap/ui-bootstrap-tpls.min.js')
script(src='js/app.js')
script(src='js/config.js')
script(src='js/services/global.js')
script(src='js/controllers/posts.js')
script(src='js/controllers/header.js')
script(src='js/filters.js')
script(src='js/directives.js')
Run Code Online (Sandbox Code Playgroud)
回购在这里
更新: 我在github上发布了这个问题并引用了这个疯狂的答案:https://github.com/angular/angular.js/issues/4675
ng-closure-runner在编译期间运行角度特定传递,其中添加了MINERR_ASSET的定义,该资产不包含在任何1.2.x版本中(包含源映射的唯一版本).但是,源映射引用MINERR_ASSET作为源,因此在请求文件时有404.
我只是快速浏览了咕噜咕噜的任务以及ng-closure-runner,但我认为这可能是ng-closure-runner包括minErr.js或基于它生成的一些文件.无论哪种方式,正确的资产都应该与其他源文件一起打包,或者MINERR_ASSET应该从源地图"sources"中删除.
我是新手.只是学习/尝试将Angular与我的webapp集成(Java + jQuery + requireJS).我没有使用任何路由器,下面是我的脚本.从其他stackoverflow我了解到这个错误是由于缺少ngRoute模块的包含.从版本1.1.6开始,它是一个单独的部分.但在我的下面的代码中,我根本不使用任何ngRouter.当我没有引用它为什么我会收到此错误?
错误:[$ injector:modulerr]由于以下原因无法实例化模块计数器:[$ injector:nomod]模块'计数器'不可用!您要么错误拼写了模块名称,要么忘记加载它.如果注册模块,请确保将依赖项指定为第二个参数.http://errors.angularjs.org/1.2.11/ $ injector/nomod?p0 = counter
模板:
<ul ng-app="counter" ng-controller="counterController">
<li>
<span class="ui-button-text" ng-bind="critical"></span>
</li>
<li>
<span class="ui-button-text" ng-bind="error"></span>
</li>
<li>
<span class="ui-button-text" ng-bind="warn"></span>
</li>
<li>
<span class="ui-button-text" ng-bind="note"></span>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
JS
requirejs.config({
paths : { angular: "/js/lib/angular/angular.min" },
shim : { "angular": { deps: [ "jquery"], exports: "angular" } }
});
require(["angular", "jquery"],function() {
var module = angular.module('counter', []);
module.controller('CounterController', function ($scope, $http, $timeout) {
$scope.critical = 0;
$scope.error = …Run Code Online (Sandbox Code Playgroud)