【问题标题】:Node.js: Error: spawn ENOENT while using GM moduleNode.js:错误:使用 GM 模块时产生 ENOENT
【发布时间】:2014-11-01 22:09:24
【问题描述】:

尽管这个问题已经被问了好几次,但现有的答案都没有帮助我。使用 MEAN 环境(在 Mac OSX 上),我使用以下方法安装了 graphicsmagick:

sudo npm install gm

每当我运行以下脚本时,我都会收到此错误:

{ [Error: spawn ENOENT] code: 'ENOENT', errno: 'ENOENT', syscall: 'spawn' }

这是我要运行的代码:

var gm = require('gm');    
//var gm = require('gm').subClass({ imageMagick: true }); //tried this one too 

    gm('./project/public/images/webshots/test1.jpg')
           .resize(320, 240)
           .write('./project/public/images/webshots/test2.jpg', function (err) {
        if (!err) console.log('done');
        if(err){
           console.log(err);   
        }
        });

适当的写入权限由:

sudo chmod -R 777 ./project/public/images/webshots

我什至尝试了几种源/目标路径组合。我还能错过什么?

【问题讨论】:

  • 您是否按照gm readme 中的说明先安装了imagemagick/graphicsmagick?如果是这样,您是否可以在 shell 提示符下手动执行 imagemagick/graphicsmagick?
  • 是的,两者都已安装。很抱歉问,但我怎样才能手动执行它?
  • 对于 graphicsmagick 它只是gm
  • 不,我不能手动启动它。得到错误:没有这样的命令。也许我需要设置一个 PATH?

标签: javascript node.js graphicsmagick


【解决方案1】:

它正在寻找 gm(GraphicsMagick) 二进制文件

通过 PPA 安装 GraphicsMagick:

sudo add-apt-repository ppa:dhor/myway
sudo apt-get update
sudo apt-get install graphicsmagick

这对我有用

【讨论】:

    【解决方案2】:

    这帮助我解决了这个问题。

    gm('./project/public/images/webshots/test1.jpg')
    .options({imageMagick: true})
    .resize(320, 240)
    .write('./project/public/images/webshots/test2.jpg', function (err) {
        if (!err) console.log('done');
        if(err){
           console.log(err);   
        }
    });
    

    注意:应该安装imageMagick

    【讨论】:

      【解决方案3】:

      gm 模块找不到gm 可执行文件的路径。所以听起来你的$PATH 需要更新以包含安装 graphicsmagick 的路径。

      【讨论】:

      • 我采取了这些步骤:重新安装 gm (sudo npm install gm) 并将 /node_modules/gm 添加到我的 PATH 信息 (vim /etc/paths) 但我仍然无法手动运行 gm(与之前)也不运行我的代码(同样的错误)。
      • 首先,本地安装不要使用sudo,使用npm install gm即可。另一个问题是,我指的不是PATH 中的gm module,而是gm binary 的实际路径(这是完全独立于 npm 中的 gm 模块)。 gm binary 是您从 homebrew、macports 安装或从 source 编译和安装的那个。 gm npm 模块调用 gm binary,因此在正确安装 binary 之前该模块将无法工作。
      • 感谢您的重要澄清!我在这里完全迷路了,因为我以为我正在处理一个“普通”节点模块。现在我知道我(也)在处理必须单独安装的实际二进制文件(不使用 npm!)我现在开始工作了。再次感谢,抱歉搞砸了。
      • 但是如何安装这些二进制文件?
      猜你喜欢
      • 2016-01-17
      • 1970-01-01
      • 2013-04-19
      • 2014-09-25
      • 2013-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多