Node.js的stdout编码问题

我做了一个快速的Ajax驱动的页面来粘贴一些文本并运行yuicompressor。 输出工作的很好,但是,当我发送标准输出回到我的网页,我有关于在<字符切断数据的问题。 例如,当我运行这个压缩机时:

 function Enum(values){ for( var i = 0; i < values.length; ++i ){ this[values[i]] = i; } return this; } 

我得到一个压缩版本,没问题。 现在,当我把这个发送到我的页面这样的:

 exec(command, function(err, stdout, stderr) { console.log(stdout); res.writeHead(200, {'content-type': 'text/plain'}); //res.write(decodeURIComponent(escape(stdout))); //res.write(qs.escape(stdout)); res.write(stdout); res.end('\n'); }); 

这总是导致数据发送被切断在<导致:

 function Enum(a){for(var b=0;b 

console.log(stdout)完美显示,所以直到它发送到客户端,它被切断。

当我尝试编码时,我能够将整个输出都转到我的页面,但是在前端解码会导致同样的问题。

这是ajax调用:

 if(ready) { $.ajax('/get' + args + '/', { type: 'GET', dataType: 'text', success: function(data) { $('pre').html(data) }, error: function() { console.log('error retrieving data') } }); } 

看起来你的难处在于,你告诉jQuery使用一段JavaScript代码作为HTML,并且在第一个HTML元字符“ < ”处切断。 pre标签的内容仍然是HTML,只是空白的处理方式不同。 调用$('pre').text(data) ,你应该没问题。