npm包在MeteorJS应用程序

时间:2017-11-30 21:42:48

标签: node.js meteor npm

我正在尝试使用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,它们工作正常。

我在这里做错了什么?

2 个答案:

答案 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也可以解决问题。