전자로 앱을 만들고 있습니다. Socket.IO로 서버에 파일을 보내야했기 때문에 socket.io-stream 모듈을 설치했습니다. 나는 브라우저에서 테스트 했으므로 잘 작동한다. 그러나 전자에서 동일한 작업을 수행, 항상'TypeError : String/buffer chunk가 유효하지 않습니다.'라는 메시지가 socket.io-stream에 의한 전자 전송에 실패했습니다.
TypeError: Invalid non-string/buffer chunk
으로 이것은 서버 측 코드 실패
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', {});
});
을 그리고 이것은 클라이언트 측 코드입니다 :
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);
코드, 그냥 매우 간단합니다 NPM의 모듈 소개 페이지에있는 예제를 참조하십시오. 이미 브라우저로 작동한다고했습니다. 콘솔에 모든 파일 업로드 진행 상황을 기록한 것을 볼 수 있습니다. 일렉트론을 사용하면 파일 보내기는 모든 데이터 크기를 기록하기 때문에 작동하지만 서버 쪽에서는 실패합니다.
NW.js와 비슷한 문제가 발견되어 그 사람이 자신의 문제를 해결했지만 저에게는 효과가 없었습니다.
내가 어떻게해야하는지 정말 고맙게 생각합니다.