“TypeError:这不是一个types化的数组。在Node.js中有”WS.js“

我只有这在我的服务器文件,并出现错误:

const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 9000 }); wss.broadcast = function broadcast(data) { wss.clients.forEach(function each(client) { if (client.readyState === WebSocket.OPEN) { client.send(data); } }); }; wss.on('connection', function connection(ws) { ws.on('message', function incoming(data) { wss.broadcast(data); }); }); 

terminal显示这个错误:

 /home/mgmaip/server/node_modules/ws/lib/PerMessageDeflate.js:8 const TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]); ^ TypeError: this is not a typed array. at Function.from (native) at Object.<anonymous> (/home/mgmaip/server/node_modules/ws/lib/PerMessageDeflate.js:8:24) at Module._compile (module.js:397:26) at Object.Module._extensions..js (module.js:404:10) at Module.load (module.js:343:32) at Function.Module._load (module.js:300:12) at Module.require (module.js:353:17) at require (internal/module.js:12:17) at Object.<anonymous> (/home/mgmaip/server/node_modules/ws/lib/WebSocket.js:16:27) at Module._compile (module.js:397:26) 

我有节点的最后一个版本,有人知道会发生什么? 谢谢!

从这个问题 , ws v2不适用于节点<4.5.0(见下面的兼容性)。 您可以升级到较新版本的节点,也可以使用旧版本的ws ws@1

 npm install ws@1 

在进行一些testing之后,这里是一个兼容性列表, ws@2v4.5.0v4.7.3之间以及从v5.10.0v5.10.0

 | node version | ws@2 working | |--------------|--------------| | v4.4.7 | | | v4.5.0 | OK | | v4.6.0 | OK | | v4.6.1 | OK | | v4.6.2 | OK | | v4.7.0 | OK | | v4.7.1 | OK | | v4.7.2 | OK | | v4.7.3 | OK | | v5.0.0 | | | v5.1.0 | | | v5.1.1 | | | v5.2.0 | | | v5.3.0 | | | v5.4.0 | | | v5.4.1 | | | v5.5.0 | | | v5.6.0 | | | v5.7.0 | | | v5.7.1 | | | v5.8.0 | | | v5.9.0 | | | v5.9.1 | | | v5.10.0 | OK | | v5.10.1 | OK | | v5.11.0 | OK | | v5.11.1 | OK | | v5.12.0 | OK |