2012-11-11 18 views
3

我有一对夫妇与节点ImageMagick的问题。在某些图像上传我得到这个错误:捕获ImageMagick的错误 - 节点崩溃

/node_modules/imagemagick/imagemagick.js:126 
    prop[comps[0].trim().toLowerCase()] = comps[1].trim() 

TypeError: Cannot set property '20' of undefined 

任何想法是什么意思?有些图像可以正常工作,其他图像可以。在这种情况下,它是一个名为“icon_75.png”的PNG图像 - 其他PNG工作正常,都是通过相同的过程创建的。

这似乎是解析图像信息,其中包括了一堆的直方图号线 - 似乎是合法的信息。

' Histogram:', 
'  973: (107,108, 52) #6B6C34 srgb(107,108,52)', 
'  70: (108,105, 55) #6C6937 srgb(108,105,55)', 
'   2: (110,107, 58) #6E6B3A srgb(110,107,58)', 
'   2: (112,109, 60) #706D3C srgb(112,109,60)', 
'   1: (114,111, 63) #726F3F srgb(114,111,63)', 
'   1: (115,113, 65) #737141 srgb(115,113,65)', 
'  14: (116,117, 64) #747540 srgb(116,117,64)', 
'   1: (117,114, 68) #757244 srgb(117,114,68)', 
'   1: (120,117, 71) #787547 srgb(120,117,71)', 
'   1: (121,119, 73) #797749 srgb(121,119,73)', 
'  18: (124,121, 76) #7C794C srgb(124,121,76)', 
'   6: (125,126, 77) #7D7E4D srgb(125,126,77)', 
'   2: (130,127, 85) #827F55 srgb(130,127,85)', 
'  20: (134,135, 89) #868759 srgb(134,135,89)', 

我更重要的问题是如何避免崩溃。我试图在一个catch块中封装裁剪调用,但这不起作用。有关如何防止我的应用程序停机的任何建议?

try { 
    imageMagick.crop({ 
    width: opts.width, 
    height: opts.height, 
    srcPath: this.uploadDir + "/" + that.name, 
    dstPath: this.uploadDir + "/" + version + "_" + that.name 
    }, function(err, stdout, stderr) { 
    if(err) 
     console.log(err) 
    else { 
     console.log('Creating ' + version); 
     ... 
    } 
    }); 
} 
catch(e) { 
    console.log('Whao'); 
} 
+0

我有同样的'不能设置property'错误...也非常渴望知道它是什么。 – enyo

+0

我也遇到过这个问题。物业编号改变,但似乎总是这条线。 '/var/www/project/node_modules/imagemagick/imagemagick.js:126 丙[谱曲[0] .trim()toLowerCase()] =谱曲[1] .trim() ^ 类型错误:无法设置属性'82'未定义' – RevNoah

+0

请看看我标记的答案 - 您的imagemagick代码需要修补,直到它固定上游 – cyberwombat

回答

1

所以看起来在ImageMagick的某些版本中识别输出已经改变了。它的输出中还有一个可能的错误。

我已经提交了ImageMagick的错误在这里:http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=22256

这里https://github.com/rsms/node-imagemagick/issues/67

由于这种在任这么写,没有回答节点ImageMagick的错误我接着提出了修复。

您将需要编辑node_modules/ImageMagick的/ imagemagick.js文件并查找parseIdentify功能 - 评出来,并用这一个:https://gist.github.com/4066782