我有客户端 - 服务器应用程序,我遇到了这个错误:"未捕获错误:[$ 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;
有什么想法可以解决这个问题吗?
答案 0 :(得分:1)
实际上您在 head tag中使用 data-ng-app =“myApp”。该模块仅在head标记内可用。
您可以尝试在 html 标记中声明。然后尝试..
希望你得到结果......
谢谢..
答案 1 :(得分:1)
可以使用以下技术解决此问题
首先,您需要像这样移动ng-app
<html lang="en" data-ng-app="myApp">
第二步是如果不想使用它,请从模块中删除“ btford.socket-io”
angular.module('myApp', [
'ngRoute'
])
如果您不想使用 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库,它们非常大并且可能会损害加载时间[仅限个人建议:)]。
答案 3 :(得分:0)
您收到[$ injector:modulerr]错误意味着可能是由于您的应用中使用的模块未加载。
尝试在head部分中加载脚本socket.io.js,与角度脚本相同。