2016-01-12 20 views
8

Grunt imagemin getta il seguente errore quando provo a farlo funzionare:errore imagemin Grunt: Impossibile leggere proprietà 'contenuti' di indefinito

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

Ecco il mio file 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" 
    } 
} 

E ecco la mia 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']); 

}; 

La questione era flagged and evidently resolved in una versione precedente di imagemin. Ma la soluzione concordata era di aggiornare grunt-contrib-imagemin alla versione 1.0.0 e imagemin alla 4.0.0, cosa che ho fatto e che ancora non funziona.

+1

Il grunt-contrib-imagemin alla versione 1.0.0 e imagemin alla 4.0.0 funzionava per me ieri e ora non funziona più. – Drew

+0

C'è anche un biglietto GitHub per questo: https://github.com/gruntjs/grunt-contrib-imagemin/issues/344 –

risposta

6

Basta aggiornare il gurnt-contrib-imagemin a 1.0.0 o più recente, che possono avere più vecchia versione 0.9, probabilmente. x

5

ho risolto il problema cambiando il mio grugnito-contrib-imagemin nel mio package.json per grunt-contrib-imagemin": "0.9.1"

7

La soluzione GitHub (https://github.com/gruntjs/grunt-contrib-imagemin/issues/344), invece di declassamento grunt-contrib-imagemin, è l'aggiunta di "vinyl-fs": "2.2.1" nel vostro package.json.

vinyl-fs sembra essere ovunque nell'albero delle dipendenze. Ma c'è stata una modifica della versione di rottura di vinyl-fs da 2.2.1 a 2.3.0, che frenerà il processo di costruzione. Quindi la versione dovrebbe essere "forzata" a 2.2.1.

+0

L'ho provato e non ha funzionato. Alla fine, ho fatto ricorso alla reinstallazione dell'ultima versione che ero sicuro funzionasse (0.3.0). –

+0

Ora c'è una correzione per 'vinyl-fs', che risolve il problema (https://github.com/gruntjs/grunt-contrib-imagemin/issues/344). L'errore non dovrebbe più verificarsi, quindi dovrebbe essere sicuro rimuovere la riga da package.json. –

+0

Per me è stato corretto l'aggiornamento di grunt-contrib-imagemin a 1.0.0. Che aggiorna la sua dipendenza da imagemin alla 4.0.0. –

1

Per me ha funzionato l'aggiornamento alla versione grunt-contrib-imagemin^1.0.0 e l'aggiunta di dipendenze imagemin versione ^4.0.0 e vinyl-fs versione ^2.1.1