我正在尝试使用simple-peer包,如下所示:
var Peer = require('simple-peer');
var peer = new Peer({});
peer.on('signal', function(data) {
console.log(JSON.stringify(data));
});
我没有打印到控制台,出现以下错误:
SCRIPT5009:'缓冲区'未定义
注意:我的项目是聊天应用程序,在发送短信时工作正常,但在我添加上述代码后,聊天功能也无效。
我正在使用其他npm软件包,例如socket.io,它们工作正常。
我在这里做错了什么?
答案 0 :(得分:2)
由于Buffer是服务器端使用的Node全局,因此您需要包含polyfill以在客户端上使用相同的库。
Meteor通过meteor-node-stubs
包轻松实现这一目标。安装时使用:
meteor npm install --save meteor-node-stubs
请注意,这些不小,可能会显着增加您的捆绑尺寸。留意它有多大的影响,这样你就可以决定使用这个特殊的包装是否值得增加重量。
为了确保模块可以使用它,您可能需要在初始化window
之前将其添加到simple-peer
:
window.Buffer = require('buffer').Buffer
将此添加到主js文件(或首先运行的文件)
答案 1 :(得分:1)
根据nodejs缓冲文档...
Buffer类是Node.js中的全局类,因此不太可能 一个人需要使用require('buffer')。缓冲区。
但您可能需要添加一行
var Buffer = require('buffer').Buffer
使其可用于此模块。 Meteor不是最新版本的节点 - 升级到1.6也可以解决问题。