【问题标题】:AngularJS Protractor and Socket.IOAngularJS 量角器和 Socket.IO
【发布时间】:2013-11-15 20:27:23
【问题描述】:

在使用现有的 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>

vs 上面显示的我的 socket.io 工厂

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

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

【问题讨论】:

    标签: node.js angularjs socket.io protractor


    【解决方案1】:

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

    【讨论】:

    • 这是一个很好的观点,但我认为这不是问题所在。在我的 socket-service.js 引用它之前,我确实让我加载了 socket.io.js 文件。如果我将 socket.io.js 文件从 node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js 复制到我的客户端文件的存储位置(并适当地引用它),一切作品。我只是不想做这一步。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2019-04-04
    • 2015-09-15
    • 2017-06-04
    • 2015-09-20
    相关资源
    最近更新 更多