2017-02-28 82 views
4

驗證通過socket.io從客戶端接收到的數據時發生此錯誤。Node.js和Socket.io來自ws的UTF8驗證類型錯誤

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驗證到socket.io的node_modules文件夾沒有成功

+0

你能解決嗎?我有同樣的問題 –

+0

我有同樣的問題,加上它可以幫助任何人^ - ^ –

回答

0

UPDATE:升級ws V2.X可以解決這個問題!

變化Receiver.jsws模塊是這樣的:

var isValidUTF8 = require('./Validation') 
... 
if (!isValidUTF8(messageBuffer)) { 
    ... 
} 

,你可以這樣做只是讓它工作,但它不是一個很好的解決方案,它好像有一個錯誤的出口驗證模塊,您可以發送一個PR到ws來解決這個問題。