Ich erstelle eine App mit Electron. Ich musste Datei mit Socket.IO zum Server schicken, also installierte ich socket.io-stream Modul. Ich habe im Browser getestet, es funktioniert gut. Aber tun gleiche in Electron, es nicht immer mitElektron sendende Datei von socket.io-stream fehlgeschlagen mit 'TypeError: Ungültige Nicht-String/Puffer Chunk'
TypeError: Invalid non-string/buffer chunk
Dies ist Server-Seite Code:
ss(socket).on('/user/update/profile', (stream, data) => {
const filename = path.basename(data.name);
const ws = fs.createWriteStream(`userdata/profile/${filename}`);
stream.on('error', (e) => {
console.log('Error found:');
console.log(e);
});
stream.on('drain', (e) => {
console.log('drain');
});
stream.on('data',() => {
console.log('data');
});
stream.on('close',() => {
console.log('close');
});
stream.pipe(ws);
//ss(socket).emit('/user/update/profile', {});
});
Und das ist Client-Seite Code:
var file = ev.target.files[0];
var stream = ss.createStream();
ss(socket).emit('/user/update/profile', stream, {
email: this.props.user.email,
name: file.name,
size: file.size
});
var blobStream = ss.createBlobReadStream(file);
var size = 0;
blobStream.on('data', (chunk) => {
size += chunk.length;
console.log(`${size}/${file.size}`);
});
blobStream.pipe(stream);
Code ist ziemlich einfach, nur aus dem Beispiel in der Einführungsseite des Moduls auf NPM. Ich habe bereits gesagt, dass es als Browser funktioniert. Sie sehen, dass ich jeden Upload der Dateien auf der Konsole protokolliert habe. Wenn Sie Electron verwenden, scheint das Senden der Datei zu funktionieren, da jede Datengröße protokolliert wurde, auf der Serverseite jedoch fehlgeschlagen.
Ich fand ähnliches Problem mit NW.js und dieser Typ löste sein Problem mit seinem eigenen Weg, aber das hat nicht für mich funktioniert.
Es wird sehr dankbar sein, mir helfen, wie soll ich tun.