简体   繁体   English

travis-ci在grunt-contrib-imagemin任务上构建失败(无法准备未定义的属性“ contents”

[英]travis-ci build failure on grunt-contrib-imagemin task (Cannot ready property 'contents' of undefined

I am encountering an error during a travis-ci build for grunt-contrib-imagemin task... 在travis-ci构建grunt-contrib-imagemin任务时遇到错误...

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

The grunt build works successfully on my local machine, however it fails when executed via travis-ci grunt构建在我的本地计算机上成功运行,但是通过travis-ci执行时失败

Gruntfile.js Gruntfile.js

imagemin: {
      dist: {
        files: [{
          expand: true,
          cwd: '<%= yeoman.app %>/images',
          src: '{,*/}*.{png,jpg,jpeg,gif}',
          dest: '<%= yeoman.dist %>/images'
        }]
      }
    },

Local Grunt Build (output) 本地Grunt构建(输出)

Running "imagemin:dist" (imagemin) task
    Minified 9 images (saved 77.32 kB)

    Done, without errors.

    Execution Time (2016-01-13 17:04:49 UTC)
    imagemin:dist  1.6s  100%
    Total 1.6s

Travis CI grunt build (output) Travis CI grunt构建(输出)

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


    Execution Time (2016-01-13 17:00:32 UTC)
    loading tasks    9ms   2%
    imagemin:dist  441ms  98%
    Total 450ms Use --force to continue.

        Aborted due to warnings.

I have tried to determine if there is a syntax issue in how I am declaring src in the task... however, that does not appear to be the case... as I can successfully complete the build locally without error using a few different syntax styles, including the example provided by Grunt for grunt-contrib-imagemin 我试图确定在任务中声明src的方式中是否存在语法问题...但是,情况似乎并非如此...因为我可以成功地在本地完成构建,而不会出现一些错误语法样式,包括Grunt为grunt-contrib-imagemin提供的示例

Ref: https://github.com/gruntjs/grunt-contrib-imagemin 参考: https : //github.com/gruntjs/grunt-contrib-imagemin

dynamic: {                         // Another target
      files: [{
        expand: true,                  // Enable dynamic expansion
        cwd: 'src/',                   // Src matches are relative to this path
        src: ['**/*.{png,jpg,gif}'],   // Actual patterns to match
        dest: 'dist/'                  // Destination path prefix
      }]

Any thoughts or suggestions? 有什么想法或建议吗?

As a follow-up... 作为后续...

I have successfully moved passed this issue via a simple workaround by swapping out "grunt-contrib-imagemin": "^1.0.0" for "grunt-image": "^1.2.1" ... and subsequently updating my Gruntfile.js by replacing imagemin tasks with image tasks... 我已通过一个简单的解决方法成功解决了此问题,方法是将“ grunt-contrib-imagemin”:“ ^ 1.0.0”换为“ grunt-image”:“ ^ 1.2.1” ...,然后更新了我的Gruntfile。 js通过将imagemin任务替换为image任务...

Local builds and Travis CI builds are now succeeding with the same results. 本地版本和Travis CI版本现在都取得了成功,并取得了相同的结果。

Gruntfile.js Gruntfile.js

image: {
      dist: {
        files: [{
          expand: true,
          cwd: '<%= yeoman.app %>/images',
          src: '{,*/}*.{png,jpg,jpeg,gif}',
          dest: '<%= yeoman.dist %>/images'
        }]
      }
    },

Sample build output below via local machine and via travis-ci: 以下是通过本地计算机和travis-ci生成的示例输出:

Running "image:dist" (image) task
✔ app/images/npmjs.png -> before=3.75 kB after=158 B reduced=3.59 kB(95.9%)
✔ app/images/bootstrap.png -> before=41.5 kB after=21.93 kB reduced=19.57 kB(47.2%)
✔ app/images/bowerjs.png -> before=17.71 kB after=6.65 kB reduced=11.06 kB(62.5%)
✔ app/images/nodejs.png -> before=8.45 kB after=2.93 kB reduced=5.51 kB(65.3%)
✔ app/images/starterlog.png -> before=34.53 kB after=10.58 kB reduced=23.95 kB(69.3%)
✔ app/images/gruntjs.png -> before=84.38 kB after=27.98 kB reduced=56.4 kB(66.8%)
✔ app/images/firebase.png -> before=32.03 kB after=12.19 kB reduced=19.83 kB(61.9%)
✔ app/images/fontawesome.png -> before=12.01 kB after=5.63 kB reduced=6.38 kB(53.1%)
✔ app/images/angular.png -> before=41.5 kB after=18.63 kB reduced=22.87 kB(55.1%)

Done, without errors.

Execution Time (2016-01-13 17:47:44 UTC)
image:dist  2.6s  99%
Total 2.6s

This solution with grunt-image is working on my Angular + Firebase application... which I am deploying to Firebase Hosting via travis-ci and the deployment tool dpl. 这个带有grunt-image的解决方案正在我的Angular + Firebase应用程序上运行...我正在通过travis-ci和部署工具dpl将其部署到Firebase Hosting。

However I still haven't determined the solution to the original bug/issue with grunt-contrib-imagemin in travis-ci 但是我还没有在travis-ci中用grunt-contrib-imagemin确定原始bug /问题的解决方案

Any ideas would be much appreciated. 任何想法将不胜感激。 Cheers! 干杯!

  1. Delete node_modules 删除node_modules

  2. Change package.json to use "grunt-contrib-imagemin": "1.0.0" and "vinyl-fs": "2.3.1" 更改package.json以使用“ grunt-contrib-imagemin”:“ 1.0.0”和“ vinyl-fs”:“ 2.3.1”

  3. Do npm install npm install

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM