2014-01-30 3 views
4

나는 시도하고 다운로드 이미지 처리 할 requestnode-canvas 모듈을 사용하고 있습니다를 다운로드 및 프로세스 이미지 :Node.js를 - '요청'과 '노드 캔버스'

var request = require('request'); 
var Image = require('canvas').Image; 

var url = 'http://farm8.staticflickr.com/7333/11286633486_070f0d33bc_n.jpg'; 

request.get({ url: url, encoding: null }, function(err, res, body) { 
    if (err) throw err; 

    var image = new Image(); 

    image.onerror = function() { 
     console.error(arguments); 
    }; 

    image.onload = function() { 
     console.log('loaded image'); 
    }; 

    image.src = new Buffer(body, 'binary'); 
}); 

나는 오류를 'Error: error while reading from input stream'(onerror 이벤트가 발생 함). 그러나 위의 이미지 URL을 브라우저에서 누르면 예상대로 이미지가 표시됩니다.

내가 뭘 잘못하고 있니?

+1

합니다. 어떤 버전의 노드, 요청 및 캔버스를 사용하고 있습니까? – mutil

+0

노드 v0.10.21을 사용하고 있습니다. npm을 통해 요청 및 캔버스를 설치 했으므로 최신 버전이라고 가정합니다. OSX 10.9 (Mavericks)에서 실행 중이며, 지침에 따라 Pixman과 Cairo를 설치했습니다. –

+0

캔버스는 v1.1.3입니다. 요청은 2.33.0 –

답변

-1

해결되었습니다.

내가 homebrew를 통해 설치하려고했기 때문에 OSX (노드 캔버스의 종속성)에 pixman 및/또는 cairo의 손상된 설치가있는 것 같습니다.

brew doctor 

가 카이로에 관련된 깨진 심볼릭 링크 등을 확인 ..to과 :

brew uninstall cairo 
brew uninstall pixman 

은 ... 다음 실행

이 솔루션은 사용 자작에서 그들을 제거하는 것이 었습니다 pixman. 그런 다음 Finder를 사용하여 카이로 & pixman bin/libs/symlinks 등을 수동으로 삭제해야합니다.

다음으로 OSX에서 cairo 및 pixman을 다시 설치하려면 install instructions for node-canvas을 따르십시오.

마지막으로 npm을 통해 노드 캔버스를 다시 설치해야하므로 'node_modules'폴더로 이동하여 'canvas'디렉토리를 삭제하십시오. 그런 다음 실행 onload 이벤트를 발사, 나를 위해 예상대로 작동

npm install canvas