【问题标题】:Getting error while using Imagemagick npm使用 Imagemagick npm 时出错
【发布时间】:2018-02-20 05:49:20
【问题描述】:

我在节点中使用 Imagemagick npm 来压缩图像。我安装了 npm 模块,它工作正常。但是一段时间后,它会抛出如下所示的错误。

TypeError: currentLine.search is not a function

如果我再次安装该模块,它不会显示错误。但过了一段时间,它又抛出了同样的错误。我正在使用 0.1.3 版本的 Imagemagick 和 8.9.1 版本的节点。 谁能帮我解决这个问题?

【问题讨论】:

  • 没有这样的0.1.3版本的imagemagick。也许你的意思是 7.0.1.3。在这种情况下,您的节点可能需要 ImageMagick 6 而不是 ImageMagick 7。尝试卸载 IM 7 并重新安装 IM 6。
  • 我检查了我的 package.json 文件,它是 imagemagick npm 版本的 0.1.3
  • 我的系统中已经安装了 IM 6
  • IM 6.x.x.x 的版本是多少? convert -versionmagick -version 用于 IM 7.x.x.x。没有 ImageMagick 0.1.3
  • 我使用的是6.7.5版本的imagemagick

标签: node.js imagemagick


【解决方案1】:

即使我在 0.1.3 npm 版本中也遇到了同样的问题。经过一番调试,我发现如果我们像这样在Array.prototype中添加自定义函数

Array.prototype.asyncforEach = async function(cbk) {
  for (let i = 0; i < this.length; i++) await cbk(this[i], i, this);
};

这将导致文件 node_modules/imagemagick/imagemagick.js 的第 113 行出现错误 i 将具有 asyncforEach 作为值,因此我们必须更改我们的 Array.prototype.methodName 如下所示或 reference 以便更好地理解。

Object.defineProperty(Array.prototype, 'asyncforEach', {
  value: async function(cbk) {
    for (let i = 0; i < this.length; i++) await cbk(this[i], i, this);
  }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 2017-10-24
    • 2013-04-01
    相关资源
    最近更新 更多