Node.js 和 Socket.io UTF8 验证 TypeError 来自 ws
Posted
技术标签:
【中文标题】Node.js 和 Socket.io UTF8 验证 TypeError 来自 ws【英文标题】:Node.js and Socket.io UTF8 Validation TypeError coming from ws 【发布时间】:2017-07-18 20:09:44 【问题描述】:验证通过 socket.io 从客户端接收到的数据时出现此错误。
C:\Users\Rayce\Documents\SENG513\node-js-getting-started\node_modules\socket.io\node_modules\ws\lib\Receiver.js:532
6:23:55 PM web.1 | if (!Validation.isValidUTF8(messageBuffer))
6:23:55 PM web.1 | ^
6:23:55 PM web.1 | TypeError: Cannot read property 'isValidUTF8' of undefined
6:23:55 PM web.1 | at C:\Users\Rayce\Documents\SENG513\node-js-getting-started\node_modules\socket.io\node_modules\ws\lib\Receiver.js:532:28
6:23:55 PM web.1 | at C:\Users\Rayce\Documents\SENG513\node-js-getting-started\node_modules\socket.io\node_modules\ws\lib\Receiver.js:368:7
6:23:55 PM web.1 | at C:\Users\Rayce\Documents\SENG513\node-js-getting-started\node_modules\socket.io\node_modules\ws\lib\PerMessageDeflate.js:249:5
6:23:55 PM web.1 | at afterWrite (_stream_writable.js:355:3)
6:23:55 PM web.1 | at onwrite (_stream_writable.js:346:7)
6:23:55 PM web.1 | at WritableState.onwrite (_stream_writable.js:89:5)
6:23:55 PM web.1 | at afterTransform (_stream_transform.js:79:3)
6:23:55 PM web.1 | at TransformState.afterTransform (_stream_transform.js:54:12)
6:23:55 PM web.1 | at Zlib.callback (zlib.js:613:5)
[DONE] Killing all processes with signal null
6:23:55 PM web.1 Exited with exit code 1
在 Receiver.js 中编辑出这部分代码,
if (!Validation.isValidUTF8(messageBuffer))
self.error('invalid utf8 sequence', 1007);
return;
阻止错误发生,但我更喜欢更好的解决方案,因为我想使用 NPM 并且每次发生更新时都不必费心重做。
我也尝试将 utf-8-validate 安装到 socket.io 的 node_modules 文件夹中,但没有成功
【问题讨论】:
你能解决吗?我有同样的问题 我也有同样的问题,求各位大神帮忙^-^ 【参考方案1】:更新:升级ws
v2.x 可以解决这个问题!
像这样在ws
module 中更改Receiver.js:
var isValidUTF8 = require('./Validation')
...
if (!isValidUTF8(messageBuffer))
...
你可以这样做只是让它工作,但这不是一个好的解决方案,似乎Validation模块导出错误,你可以发送PR到ws
解决这个问题。
【讨论】:
以上是关于Node.js 和 Socket.io UTF8 验证 TypeError 来自 ws的主要内容,如果未能解决你的问题,请参考以下文章
Phaser.js 中的 Node.js 和 Socket.io 未连接 socket.io/?EIO=3&transport=polling