Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何解决binary.js(BinaryStream.write)的节点服务器上的流不可写的问题?_Javascript_Node.js_Websocket_Binary.js - Fatal编程技术网

Javascript 如何解决binary.js(BinaryStream.write)的节点服务器上的流不可写的问题?

Javascript 如何解决binary.js(BinaryStream.write)的节点服务器上的流不可写的问题?,javascript,node.js,websocket,binary.js,Javascript,Node.js,Websocket,Binary.js,我在文件上传节点服务器上工作,对于上传后的一个大文件,我得到以下错误 错误:流不可写 在BinaryStream.write(/node_modules/binaryjs/lib/stream.js:84:11) at/src/K/Cli/upload/lib/media.js:120:36 在ChildProcess.exithandler(child_process.js:742:7) 在ChildProcess.emit(events.js:110:17) 在maybeClose(chil

我在文件上传节点服务器上工作,对于上传后的一个大文件,我得到以下错误

错误:流不可写
在BinaryStream.write(/node_modules/binaryjs/lib/stream.js:84:11)
at/src/K/Cli/upload/lib/media.js:120:36
在ChildProcess.exithandler(child_process.js:742:7)
在ChildProcess.emit(events.js:110:17)
在maybeClose(child_process.js:1015:16)
在Process.ChildProcess.\u handle.onexit(child\u Process.js:1087:5) 我正在使用节点
版本v0.10.48

从中选取的参考代码

我找不到解决这个问题的方法

问题是1%的情况下,代码转到
console.log('Debug 4)
case,执行
stream.write({end:true})它停止节点服务器,即,我得到坏网关,因为抛出的错误没有得到处理

在前端,我使用来自节点服务器的数据读取内容id并设置完成,但由于节点服务器停止,我无法从节点服务器获取内容id

bs = new BinaryServer({ port: 9004 });

bs.on('connection', function (client) {
    client.on('stream', function (stream, meta) {
        upload(stream, meta);
    });
});

function upload(stream, meta) {
    var file = fs.createWriteStream(uploadPath + '/' + meta.name);
    stream.pipe(file);
    stream.on('end', function () {

       // console.log(__dirname);
        var cli_base=__dirname+'/../../';

        var cmd = '<upload systme cmd>';
        console.log('Uploading End and running command ' + cmd);         
        try {
            stream.write({uploaded: true});
        }catch (e) {
            console.log('Debug 3, Streem On End Event : '+e.message,meta);
            //  stream.write({end: true});
        }
        if(!meta.hasOwnProperty('executed')){
            meta.executed=true;
            child = exec(cmd, function (error, stdout, stderr) {
                try{
                    console.log(error, JSON.parse(stdout), stderr);
                    var command_output = JSON.parse(stdout);

                    if(command_output.hasOwnProperty('content_id')){
                        stream.write({end: true, content_id: command_output.content_id,files:command_output.file});
                        console.log(command_output.content_id);
                    }
                }catch (e) {                        
                   console.log('Debug 4, Streem On End Event : '+e.message,meta,child);
                   stream.write({end: true});
                }
            });
        }

    });
}
bs=newbinaryserver({port:9004});
bs.on(‘连接’、功能(客户端){
client.on('stream',函数(stream,meta){
上传(流、元);
});
});
功能上传(流、元){
var file=fs.createWriteStream(上传路径+'/'+meta.name);
stream.pipe(文件);
stream.on('end',function(){
//console.log(uu dirname);
var cli_base=uu dirname+'/../../../';
var cmd='';
console.log('upload End and running command'+cmd);
试一试{
stream.write({upload:true});
}捕获(e){
log('Debug 3,Streem On End Event:'+e.message,meta);
//stream.write({end:true});
}
如果(!meta.hasOwnProperty('executed')){
meta.executed=true;
child=exec(cmd,function(error,stdout,stderr){
试一试{
log(错误,JSON.parse(stdout),stderr);
var command_output=JSON.parse(stdout);
if(command\u output.hasOwnProperty('content\u id')){
write({end:true,content\u id:command\u output.content\u id,files:command\u output.file});
日志(命令输出内容id);
}
}第(e)款{
log('Debug 4,Streem On End Event:'+e.message,meta,child);
stream.write({end:true});
}
});
}
});
}

我找到了解决您问题的方法,请在创建文件对象时使用选项,如下所示

var options = {flags: 'w', encoding: 'utf8',fd: null,mode: '0666'};
var file = fs.createWriteStream(uploadPath + '/' + meta.name,options);
节点引用

createWriteStream的编码选项


此问题可能是由于使用了节点版本!!请检查您的节点版本并添加您的问题。@Muneeralm我使用节点版本
v0.10.48
,并更新了相同的问题。@Ramrantan Gupta问题可以解决,如果您可以更新节点版本(>0.12.X)或某些LTS版本。