4

我正在使用requestnode-canvas模块来尝试下载和处理图像:

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 时,它会按预期显示图像。

我究竟做错了什么?

4

1 回答 1

-1

修复!

似乎我在 OSX(节点画布的依赖项)上安装了损坏的 pixman 和/或 cairo,可能是因为我试图通过自制软件安装它们。

解决方案是使用以下方法从自制软件中删除它们:

brew uninstall cairo
brew uninstall pixman

...然后运行:

brew doctor

..检查与 cairo 和 pixman 相关的任何损坏的符号链接等。然后你必须使用 Finder 手动删除任何 cairo & pixman bins/libs/symlinks 等。

接下来,按照node-canvas 的安装说明在 OSX 上重新安装 cairo 和 pixman。

最后,您可能需要通过 npm 重新安装 node-canvas,因此导航到“node_modules”文件夹并删除“canvas”目录。然后运行:

npm install canvas
于 2014-01-30T23:45:01.973 回答