0

使用现有的 Angular 应用程序设置 E2E 测试时,由于我在应用程序中使用 socket.io,因此无法启动。Protractor 找不到通常由节点模块提供的 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>

与上面显示的我的 socket.io 工厂相比

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

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

4

1 回答 1

0

确保该文件socket.io.js之前包含在socket-service.js. 您可以手动执行此操作,也可以使用模块加载器,例如 requirejs ( http://www.requirejs.org )

于 2013-11-05T02:46:11.280 回答