Node.js AngularJS量角器和插座.IO

Node.js AngularJS量角器和插座.IO,node.js,angularjs,socket.io,protractor,Node.js,Angularjs,Socket.io,Protractor,当使用我现有的angular应用程序设置E2E测试时,由于我在应用程序中使用socket.io,启动时遇到问题。量角器找不到通常由节点模块提供服务的socket.io文件,因为它不是我个人代码的一部分 我得到一个错误: UnknownError: Error Message => 'Can't find variable: io' 在角度方面: angular.module('socket.io', []).factory(function($rootScope) { var soc

当使用我现有的angular应用程序设置E2E测试时,由于我在应用程序中使用socket.io,启动时遇到问题。量角器找不到通常由节点模块提供服务的socket.io文件,因为它不是我个人代码的一部分

我得到一个错误:

UnknownError: Error Message => 'Can't find variable: io'
在角度方面:

angular.module('socket.io', []).factory(function($rootScope) {
  var socket = io.connect(); // I believe the error is being thrown from here
  return {
    on: function (eventName, callback) {
      socket.on(eventName, function () {...});
    },
    emit: function (eventName, data, callback) {
      socket.emit(eventName, data, function () {...});
    }
  };
});
我认为这是因为它通常由节点模块提供服务:

<script type="text/javascript" src='/socket.io/socket.io.js'></script>

vs我的socket.io工厂如上所示

<script type="text/javascript" src='js/services/socket-service.js'></script>


有没有办法在不将socket.io.js文件复制到客户端代码库的情况下解决此问题?

确保在
套接字服务.js
之前包含文件
socket.io.js
。您可以手动执行此操作,也可以使用模块加载器,如requirejs()

,这是一个很好的观点,但我认为这不是问题所在。我确实让我在socket-service.js引用socket.io.js文件之前加载它。如果我将socket.io.js文件从node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js复制到客户机文件的存储位置(并适当地引用它),一切都会正常工作。我只是不想做这一步。