Ошибка Grunt imagemin: невозможно прочитать «содержимое» свойства undefined

Grunt imagemin выдает следующую ошибку, когда я пытаюсь запустить его:

Running "imagemin:dynamic" (imagemin) task
Fatal error: Cannot read property 'contents' of undefined

Вот мой файл package.json:

{
  "name": "project1",
  "version": "0.1.0",
  "devDependencies": {
    "grunt": "~0.4.1",
    "grunt-contrib-imagemin": "^1.0.0",
    "grunt-contrib-uglify": "^0.11.0",
    "imagemin" : "4.0.0"
  }
}

А вот и мой Gruntfile.js

module.exports = function(grunt) {

    grunt.initConfig({

        pkg: grunt.file.readJSON('package.json'),

        uglify: {
          build: {
            src: 'views/js/src/main.js',
            dest: 'views/js/build/main.js'
          }
        },

        imagemin: {
          dynamic: {
            files: [{
              expand: true,
              cwd: 'views/images/src/',
              src: ['**/*.{png,jpg,gif}'],
              dest: 'views/images/build/'
            }]
          }
        }

    });

    // 3. Where we tell Grunt we plan to use this plug-in.
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-imagemin');

    // 4. Where we tell Grunt what to do when we type "grunt" into the terminal.
    grunt.registerTask('default', ['uglify', 'imagemin']);

};

Проблема была помечена и явно решена в предыдущей версии imagemin. Но согласованным решением было обновить grunt-contrib-imagemin до версии 1.0.0 и imagemin до 4.0.0, что я и сделал, но оно все еще не работает.


person Justin Smith    schedule 12.01.2016    source источник
comment
У меня вчера работали grunt-contrib-imagemin до версии 1.0.0 и imagemin до 4.0.0, а теперь уже не работают.   -  person Drew    schedule 13.01.2016
comment
Для этого также есть билет GitHub: github.com/gruntjs/grunt-contrib -imagemin/проблемы/344   -  person Matthias Lohr    schedule 13.01.2016


Ответы (4)


Просто обновите gurnt-contrib-imagemin до 1.0.0 или более поздней версии, возможно, у вас более старая версия, вероятно, 0.9.x.

person imal hasaranga perera    schedule 09.03.2016

Решение GitHub (https://github.com/gruntjs/grunt-contrib-imagemin/issues/344), вместо понижения версии grunt-contrib-imagemin добавляется "vinyl-fs": "2.2.1" в ваш package.json.

vinyl-fs кажется где-то в дереве зависимостей. Но произошло критическое изменение версии vinyl-fs с 2.2.1 на 2.3.0, что тормозит процесс сборки. Так что версию надо "принудительно" поставить на 2.2.1.

person Matthias Lohr    schedule 13.01.2016
comment
Я пробовал это, и это не сработало. В конце концов, я прибегнул к переустановке последней версии, в которой был уверен, что она работает (0.3.0). - person Justin Smith; 14.01.2016
comment
Теперь есть исправление для vinyl-fs, которое решает проблему (github.com/gruntjs /grunt-contrib-imagemin/issues/344). Ошибка больше не должна возникать, поэтому можно безопасно удалить строку из package.json. - person Matthias Lohr; 14.01.2016
comment
Для меня это исправило обновление grunt-contrib-imagemin до 1.0.0. Который обновляет свою зависимость imagemin до 4.0.0. - person Rui Marques; 15.01.2016

Я решил проблему, изменив мой grunt-contrib-imagemin в моем package.json на grunt-contrib-imagemin": "0.9.1"

person Drew    schedule 13.01.2016

У меня работало обновление grunt-contrib-imagemin до версии ^1.0.0 и добавление зависимостей imagemin версии ^4.0.0 и vinyl-fs версии ^2.1.1

person A.Stula    schedule 28.01.2016