Node.js Core -Best Javascript Runtime

Node.js 是非常优秀的 Javascript Runtime,NodejsCore介绍 Node.js 框架、应用程序和服务器端的开发问题

Learn more

节点应用程序正在等待来自Stream的最后一个“可读”事件

我正在从一个Web服务加载图像的Node.js应用程序,通过使用ImageMagick处理缩略图,并将结果保存到此Web服务。 工作stream程是类似的 [Web Service] ==> HTTP Response Stream ==> ImageMagick ==> HTTP Request Stream ==> [Web Service] 我使用Node.js http模块检索原始图像stream并保存缩略图stream,并使用imagemagick-stream模块生成缩略图,而不使用任何临时文件。 由于我还需要发送缩略图长度,所以我利用memorystream模块来将缩略图保存在内存中。 所以工作stream改变了[Web Service] ==> HTTP Response Stream ==> ImageMagick ==> memory stream ==> HTTP Request Stream ==> [Web Service] 该代码在我的笔记本电脑(Mac)和工作站(Windows)中运行良好,但在具有特殊PNG图像的Ubuntu服务器上不起作用。 但是这个图像在Mac和Windows上运行得很好,而且如果我使用ImageMagick命令行的话,它也能工作,所以这不是一个糟糕的图像。 这种现象是,当处理这个图像时,我的应用程序继续等待从ImageMagick接收数据,这意味着它永远不会触发“结束”或“错误”事件。 当我在我的Mac上尝试时,我可以看到ImageMagick发出了3个“可读”事件,这意味着它处理了3个数据块。 但在Ubuntu上,它只发出了2个“可读”的事件,然后我的代码呆在那里。 我不知道为什么会发生这种情况? 由于图像可以在Mac,Windows上处理,并且可以在命令行上在Ubuntu上处理,所以我不认为这是因为图像和ImageMagick。 我强烈的怀疑有处理stream的东西是错误的,但不知道。 下面是一些伪代码 var im = require('imagemagick-stream'); var MemoryStream = require('memorystream'); […]