Windows上的流星和graphicsMagic

时间:2015-05-25 11:49:03

标签: windows macos meteor imagemagick graphicsmagick

我正在尝试在Windows上运行MacOS下开发的meteor应用程序。

有这个问题:

  

警告:cfs:graphicsmagick找不到“graphicsMagic”或   系统中的“imageMagic”。

     

我刚检查了PATH,看看我是否能找到GraphicsMagick或者   你的系统上的ImageMagic unix / mac os / windows二进制文件,我失败了。

     

为什么:   我可能是盲目的或天真的,帮助我变聪明   2.您还没有添加二进制文件的路径   3.你还没有实际安装GraphicsMagick或ImageMagick

     

*确保“$ PATH”环境配置为“路径:/路径/到/二进制”*

     

安装提示:   * Mac OS X“brew install graphicsmagick”或“brew install imagemagick”   * Linux下载rpm或使用packagemanager   * Centos“yum install GraphicsMagick”* Windows下载安装程序并运行

我已经安装了GraphicsMagick和ImageMagic,检查了PATH。 在cmd gm命令中运行GraphicsMagick,但这个问题仍然存在于流星中。

1 个答案:

答案 0 :(得分:1)

cfs:graphicsmagick模块旨在用于Windows。这是寻找graphicsmagick的脚本。我已修改它以使用节点并增加冗长以帮助您调试问题:

var graphicsmagick = false;
var imagemagick = false;
var fs = require("fs"); //or Npm.require("fs") if you're running this script with meteor
// Split the path by : for linux
// Split the path by ; for windows
var sep = /^win/.test(process.platform) ? ';' : ':';
var binaryPaths = process.env['PATH'].split(sep);

// XXX: we should properly check if we can access the os temp folder - since
// gm binaries are using this and therefore may fail?

// XXX: we could push extra paths if the `gm` library check stuff like:
// $MAGIC_HOME The current version does not check there
// $MAGICK_HOME (GraphicsMagick docs)

// We check to see if we can find binaries
for (var i = 0; i < binaryPaths.length; i++) {
  var binPath = binaryPaths[i];
  console.log("Looking in", binPath)
  // If we have not found GraphicsMagic
  if (!graphicsmagick) {
    // Init
    var gmPath = path.join(binPath, 'gm');
    var gmExePath = path.join(binPath, 'gm.exe');

    // Check to see if binary found
    graphicsmagick = fs.existsSync(gmPath) || fs.existsSync(gmExePath);

    // If GraphicsMagic we dont have to check for ImageMagic
    // Since we prefer GrapicsMagic when selecting api
    if (!graphicsmagick && !imagemagick) {
      // Init paths to check
      var imPath = path.join(binPath, 'convert');
      var imExePath = path.join(binPath, 'convert.exe');

      // Check to see if binary found
      imagemagick = fs.existsSync(imPath) || fs.existsSync(imExePath);

    }
  }
}

console.log("Found GraphicsMagick", graphicsmagick)
console.log("Found ImageMagick", imagemagick)

当你运行它时,它会在环境变量的所有PATH变量中为你提供一个它正在查找的路径。

查找您拥有的imagemagick安装并检查它是否匹配。如果您使用Meteor运行脚本,请务必从Npm.require("fs")更改require('fs')

检查非常彻底,查找gm.execonvert.exe,如果已安装,则必须找出未检测到的原因。