2017-06-19 86 views
0

我試圖使用電子應用程序中的node.js dgram包發送udp數據包。 send方法調用Buffer,Uint8Array或字符串。但是,當我嘗試使用緩衝區或UintArray時發生類型錯誤。確切的錯誤是:TypeError:第一個參數必須是緩衝區或字符串。通過Node.js數據報在電子發送UDP數據包

我可以在Node.js dgram代碼中看到它正在使用!(buffer instanceof Buffer檢查緩衝區。如果我嘗試在我的代碼中使用instanceof在緩衝區中它只是返回對象作爲類型,而如果我嘗試'Buffer.isBuffer()'它將返回true。我已經嘗試了節點提供的所有創建緩衝區的方法buffer,但沒有結果。發送不接受字符串,但後來我遇到了編碼的各種問題,這感覺有點哈克。

它看起來像電子運行節點7.4.0。

我從這裏看到我的選擇是:

  1. 編輯Node.js的代碼
  2. 不知何故會忘的instanceof爲我的緩衝區對象返回
  3. 圖出來正確編碼緩衝區作爲一個解決方案串。

任何想法?

+0

你有沒有使用'Buffer.isBuffer()',喜歡上了類'Buffer'或你的實際情況?你有沒有嘗試過使用'Buffer.from()'創建緩衝區? – RoyalBingBong

+0

我試過使用Buffer.from和新的Buffer()。另外我錯了,如果我嘗試在緩衝區上使用instanceof Buffer,它將返回true。我認爲這個問題可能與Node dgram模塊依賴於不同版本的Buffer有關。無論如何,我可以通過重新編譯來更改節點代碼嗎? –

回答

1

爲了得到這個工作,我只是要我的全球緩衝值指向節點緩衝模塊像這樣:const Buffer = window.require('buffer').Buffer