获取错误:未知的提供者:socketProvider < – socket < – LogCtrl

我是AngularJs和nodejs的新手,我有一个简单的聊天应用程序,angular色作为客户端和socketio作为服务器端。 加载angular页面时出错

Error: [$injector:unpr] Unknown provider: socketProvider <- socket <- LogCtrl 

我的客户端

  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-route.min.js"></script> <script src="http://localhost:1337/socket.io/socket.io.js"></script> <script type="application/javascript"> socket = io.connect('http://localhost:1337/'); angular.module('Log',['ngRoute']) .controller('LogCtrl',['$scope','socket','$location', function($scope,socket,$location){ console.log('ok baby !!'); $scope.addUser = function(){ socket.emit('init',$scope.user); $location.path("/view/index.html"); }; }]); </script> <body ng-app = "Log" > <div class=" main" ng-controller = "LogCtrl" style = "width: 300px; "> <fieldset> <form ng-submit = "addUser()"> <h2 >Hello!!</h2> <input ng-model = "user" required style = "width: 200px; " placeholder = "Nhập tên của bạn" > <input type = "submit" value = "OK"> </form> </fieldset> </div> 

请帮我解决客户的问题


我尝试通过添加一些代码来redirect到index.html

 .config(['$routeProvider','$locationProvider', function($routeProvider,$locationProvider){ $routeProvider. when('/main', { templateUrl: 'view/index.html', controller: 'ChatCtrl' }) $locationProvider.html5Mode({ enabled: true, requireBase: false }); }]) .controller('LogCtrl',['$scope','$location', function($scope,$location){ console.log('ok baby !!'); $scope.addUser = function(){ socket.emit('init',$scope.user); $location.path("/main"); }; }]); 

但它不工作,总是重新加载那边(log.html)

套接字不应该在那里依赖于控制器,因为它是一个variables,你已经在全局脚本之外声明。 服务,工厂,提供,常量,值等只能用于注入依赖。

 .controller('LogCtrl', ['$scope', '$location', function($scope, $location) { console.log('ok baby !!'); $scope.addUser = function() { socket.emit('init', $scope.user); $location.path("/view/index.html"); }; }]);