NODEJS + WS 库 = 缓冲区分配错误

Posted

技术标签:

【中文标题】NODEJS + WS 库 = 缓冲区分配错误【英文标题】:NODEJS + WS LIBRARY = BUFFER ALLOC ERROR 【发布时间】:2018-05-23 19:00:59 【问题描述】:

我们正在构建一个简单的 express + websocket 库(ws)。 当我们运行一个像这样的简单示例时:

var express = require('express');
var http = require('http');
var WebSocket = require('ws');

const app = express();

//initialize a simple http server
const server = http.createServer(app);

//initialize the WebSocket server instance
const wss = new WebSocket.Server( server );

wss.on('connection', function connection(ws) 

    //connection is up, let's add a simple simple event
    ws.on('message', function incoming(message) 

        //log the received message and send it back to the client
        console.log('received: %s', message);
        ws.send('Hello, you sent -> '+ message);
    );

    //send immediatly a feedback to the incoming connection    
    ws.send('Hi there, I am a WebSocket server');
);

//start our server
server.listen(process.env.PORT || 8999, () => 
    console.log('Server started on port'+ server.address().port + ' 
:)');
);

但是当我们运行应用程序时,我们得到了这个错误:

ws constants.js:8 EMPTY_BUFFER: Buffer.alloc(0), ^ TypeError: 
Buffer.alloc is not a function

你知道它是关于什么的吗?由于版本冲突,谷歌指出了几种情况。 如果我输入:nodejs -v 它会拖我:v 4.2.6

感谢您的帮助。

【问题讨论】:

【参考方案1】:

我已经找到了问题...这是一个包版本问题。

我卸载了所有东西,然后用这一行重新安装了关于 nodejs 的所有东西:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

我升级到 nodejs 8.x。之后,重新启动我的会话,一切正常。 后来我找到了一些关于使用WS库的正确版本的cmets。

问候!

【讨论】:

以上是关于NODEJS + WS 库 = 缓冲区分配错误的主要内容,如果未能解决你的问题,请参考以下文章

将二进制 NodeJS 缓冲区转换为 JavaScript ArrayBuffer

使用 numpy/ctypes 公开 C 分配的内存缓冲区的更安全方法?

缓冲区长度错误(const char FAR*)

打字稿错误 TS2345 错误:TS2345:“缓冲区”类型的参数不可分配给“字符串”类型的参数

分段错误:当缓冲区>4M 时,Ubuntu 中 C 程序中的堆栈分配

Node.js实战对于Buffer和Stream模块系统的深入剖析