Ratchet / When.js:“未捕获的ReferenceError:模块未定义”

时间:2013-09-06 20:07:19

标签: php zeromq ratchet

我正在尝试使用棘轮来反映我的数据库实时更改。 我使用了推送应用程序的代码(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( '主题'); //订阅主题。

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

错误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

任何帮助?

2 个答案:

答案 0 :(得分:5)

可以使用以下 之前的 解决,包括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文件。

答案 1 :(得分:2)

这是因为您在不使用AMD等模块系统的情况下使用了when.js。

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

浏览器环境(通过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使用何时启用/ monitor / console
    2. 进行构建
  4. <script src="path/to/when/build/when.js"></script>
    1. when将以window.when
    2. 的形式提供
    3. 其他模块将作为子对象/功能可用,例如window.when.fn.liftwindow.when.sequence。请参阅browserify构建文件中的完整子命名空间列表
相关问题