gulp-imagemin: не удалось загрузить плагин по умолчанию xxx

среда:

  • Windows 7
  • узел 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'))
})

когда я "глотаю изображение", получаю ошибку:

[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"

}

что с ним случилось?


person yuwanlin    schedule 10.02.2017    source источник
comment
Добро пожаловать в СО! Можете ли вы попробовать удалить (npm uninstall gulp-imagemin), а затем переустановить (npm install -D gulp-imagemin) и посмотреть, есть ли какие-либо ошибки во время установки?   -  person henry    schedule 18.02.2017


Ответы (2)


У меня те же проблемы, и я обнаружил, что это потому, что плагины по умолчанию не были установлены правильно.

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, мы можем увидеть Module not found 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
person nodejh    schedule 26.07.2017

Похоже, это проблема node 6. Попробуйте понизить версию, которую вы используете для этого проекта. Я получаю ошибки установки gifsicle на 6.9.5, но не на 6.3.1 (не пробовал все версии между ними).

Если вы не знакомы с переключением между версиями узла, рекомендуемое решение — использовать 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 и как автоматически загрузить версию узла вашего проекта.)

person henry    schedule 18.02.2017