gulp-imagemin:无法加载默认插件xxx。

3

环境:

  • Windows 7
  • Node 6.9.5

我使用像这个npm的插件。但是我遇到了一个错误。从一些视频中得知,它是正确的。这与imagemin的版本有关吗?

// gulpfile.js

var gulp = require('gulp');
var imagemin = require('gulp-imagemin');

var app = {
  srcPath: 'src/',
  devPath: 'build/',
  prdPath: 'dist/', //生产部署
}
gulp.task('image', function() {
  gulp.src(app.srcPath + 'image/**/*')
  .pipe(gulp.dest(app.devPath + 'image'))
  .pipe(imagemin())
  .pipe(gulp.dest(app.prdPath + 'image'))
})

当我运行命令 "gulp image" 时,出现错误:

[13:05:56] Using gulpfile ~\Desktop\study\angularapp\gulpfile.js
[13:05:56] Starting 'image'...
[13:05:56] Finished 'image' after 6.96 ms
[13:05:56] gulp-imagemin: Couldn't load default plugin "gifsicle"
[13:05:56] gulp-imagemin: Couldn't load default plugin "jpegtran"
[13:05:56] gulp-imagemin: Couldn't load default plugin "optipng"
[13:05:56] gulp-imagemin: Minified 1 image (saved 0 B - 0%)

我使用 npm install imagemin-optipng,但它仍然无法正常工作。类似这样的依赖关系:

"devDependencies": {
"clean-css": "^4.0.5",
"gulp": "^3.9.1",
"gulp-clean": "^0.3.2",
"gulp-concat": "^2.6.1",
"gulp-connect": "^5.0.0",
"gulp-cssmin": "^0.1.7",
"gulp-imagemin": "^3.1.1",
"gulp-less": "^3.3.0",
"gulp-load-plugins": "^1.5.0",
"gulp-uglify": "^2.0.1",
"lodash": "^4.17.4",
"open": "^0.0.5"

它发生了什么事情?


欢迎来到SO!您可以尝试卸载 (npm uninstall gulp-imagemin),然后重新安装 (npm install -D gulp-imagemin),看看在安装过程中是否有任何错误? - henry
2个回答

6

我有同样的问题,我发现是因为默认插件没有正确安装。

npm install imagemin-jpegtran imagemin-svgo imagemin-gifsicle imagemin-optipng --save

这个警告是由这些代码行#L12抛出的。

const loadPlugin = (plugin, args) => {
  try {
    return require(`imagemin-${plugin}`).apply(null, args);
  } catch (err) {
    gutil.log(`gulp-imagemin: Couldn't load default plugin "${plugin}"`);
  }
};

如果在catch中记录错误,我们会看到模块未找到 xxx

try {
  return require(`imagemin-${plugin}`).apply(null, args);
} catch (err) {
  console.log(err); // and will throw error: XX Module Not Found
  gutil.log(`gulp-imagemin: Couldn't load default plugin "${plugin}"`);
}

因此,我们可以安装丢失的软件包。

如果还有其他错误,请重新安装 imagemin

npm uninstall gulp-imagemin --save
npm install gulp-imagemin --save

我必须单独安装这两个软件包npm install imagemin-gifsiclenpm install imagemin-optipng - ekimas

0

看起来这是一个node 6的问题。尝试降低您在此项目中使用的版本。我在6.9.5上遇到了gifsicle安装错误,但在6.3.1上没有(未尝试所有中间版本)。

如果您不熟悉在不同版本的node之间进行切换的操作,建议解决方案是使用nvm

阅读https://github.com/creationix/nvm#installation中的说明(并非所有操作系统都受支持),然后运行以下命令:

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash

nvm 文档非常详细,但基本上你需要运行 nvm install YOURVERSIONNUMBER 然后运行 nvm use YOURVERSIONNUMBER。(此外值得注意的是:如何使用 .nvmrc,以及 如何自动加载您项目的 Node 版本。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接