Angulrjs - 未捕获的错误:[$ injector:modulerr]

时间:2015-06-23 09:47:00

标签: javascript angularjs html5 socket.io

我有客户端 - 服务器应用程序,我遇到了这个错误:"未捕获错误:[$ injector:modulerr]"。 我搜索了一下,但我找到了很多答案但是没有解决问题。 这是我的客户代码:



angular.module('myApp', [
  'btford.socket-io', 'ngRoute'
]).
factory('mySocket', function (socketFactory) {
  var myIoSocket = io.connect('http://localhost:3000');

  mySocket = socketFactory({
    ioSocket: myIoSocket
  });

  return mySocket;
})
.controller('MyCtrl', function ($scope,$route, mySocket) {
	$scope.func = function(){
		mySocket.emit('add user', "aaa");
	};
});

<!doctype html>
<html lang="en">
<head data-ng-app="myApp">
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
	<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.min.js"></script>     
	<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular-route.js"></script>
	
    <meta charset="UTF-8">
    <title>Socket.IO Chat Example</title>
    <link rel="stylesheet" href="style.css">
</head>
<body ng-init="func()" data-ng-controller="MyCtrl">
<ul class="pages">
    <li class="chat page">
        <div class="chatArea">
            <ul class="messages"></ul>
        </div>
        <input class="inputMessage" placeholder="Type here..."/>
    </li>
    <li class="login page">
        <div class="form">
            <h3 class="title">What's your nickname?</h3>
            <input class="usernameInput" type="text" maxlength="14" />
        </div>
    </li>
</ul>

<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="http://localhost:3000/socket.io/socket.io.js"></script><!----------------------------------------->
<script src="main2.js"></script>
</body>
</html>
&#13;
&#13;
&#13;

有什么想法可以解决这个问题吗?

4 个答案:

答案 0 :(得分:1)

实际上您在 head tag中使用 data-ng-app =“myApp”。该模块仅在head标记内可用。

您可以尝试在 html 标记中声明。然后尝试..

希望你得到结果......

谢谢..

答案 1 :(得分:1)

可以使用以下技术解决此问题

  1. 首先,您需要像这样移动ng-app <html lang="en" data-ng-app="myApp">

  2. 第二步是如果不想使用它,请从模块中删除“ btford.socket-io”

       angular.module('myApp', [
          'ngRoute'
       ])
    
  3. 如果您不想使用 btford.socket-io ,请下载其此插件路径,然后 <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-socket-io/0.7.0/socket.min.js"></script>

答案 2 :(得分:0)

看起来您缺少用于加载angular-socket-io/socket.js模块的主btford.socket-io文件。一旦你包含它,一切都应该工作!另外请注意,您可能只想加载1个jQuery库,它们非常大并且可能会损害加载时间[仅限个人建议:)]。

资源:angular-socket-io : Install

答案 3 :(得分:0)

您收到[$ injector:modulerr]错误意味着可能是由于您的应用中使用的模块未加载。

尝试在head部分中加载脚本socket.io.js,与角度脚本相同。