7

我正在尝试使用棘轮来实时反映对我的数据库所做的更改。我使用了推送应用程序的代码(http://socketo.me/docs/push)。但我在这方面遇到了错误。

我打开客户端页面的那一刻:

Uncaught ReferenceError: module is not defined                    when.js:900
(anonymous function)                                              when.js:900
(anonymous function)                                              when.js:15
(anonymous function)                                              when.js:900

在此之后我输入: conn.subscribe('topic'); //这订阅了主题。

现在,当我对此主题进行更改时,会在要显示更改的位置弹出一个错误。

错误 2:

Uncaught TypeError: undefined is not a function         [VM] autobahn.min.js (124):66
(anonymous function)                                    [VM] autobahn.min.js (124):66
c._websocket.onmessage                                  [VM] autobahn.min.js (124):66

有什么帮助吗?

4

2 回答 2

5

可以通过在包含文件之前使用以下 JavaScript 来解决:when.js

window.define = function(factory) {
    try{ delete window.define; } catch(e){ window.define = void 0; } // IE
    window.when = factory();
};
window.define.amd = {};

然后,包含您的when.js文件。

于 2013-09-26T11:42:47.833 回答
2

这是因为您在使用 when.js 时没有使用 AMD 等模块系统。

文档解释了如何通过使用browserify将文件转换为在浏览器中工作,只要您完成了 n

浏览器环境(通过 browserify)

由于 when.js 主要针对模块化环境,默认情况下它不会导出到全局对象(window在浏览器中)。如果您不想在项目中使用 AMD 或 CommonJS 加载器,您可以使用 browserify 创建自己的 when.js 构建。

  1. git clone https://github.com/cujojs/when
  2. npm install
  3. npm run browserify生成build/when.js
    1. 或者npm run browserify-debug在启用时/监视器/控制台的情况下构建
  4. <script src="path/to/when/build/when.js"></script>
    1. when将作为window.when
    2. 其他模块将作为子对象/功能提供,window.when.fn.lift例如window.when.sequence. 在 browserify 构建文件中查看完整的子命名空间列表
于 2014-08-19T15:12:17.143 回答