Grunt imagemin错误:无法读取未定义的属性"内容"

Jus*_*ith 9 javascript gruntjs grunt-contrib-imagemin imagemin

当我尝试运行它时,Grunt imagemin会抛出以下错误:

Running "imagemin:dynamic" (imagemin) task
Fatal error: Cannot read property 'contents' of undefined
Run Code Online (Sandbox Code Playgroud)

这是我的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"
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我的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']);

};
Run Code Online (Sandbox Code Playgroud)

该问题已在先前版本的imagemin中标记并明显已得到解决.但商定的解决方案是将grunt-contrib-imagemin更新为1.0.0版本,将imagemin更新为4.0.0,我已经完成了它仍然无法正常工作.

ima*_*era 8

只需将gurnt-contrib-imagemin更新为1.0.0或更新,您的旧版本可能是0.9.x


Mat*_*ohr 7

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.


Dre*_*rew 5

我通过将package.json中的grunt-contrib-imagemin更改为来解决了这个问题 grunt-contrib-imagemin": "0.9.1"