6

I'm getting this error when I try to compile with Grunt. I haven't used it much before but I seem to only be getting this error with this project and it works fine for other projects on my server.

Running "jshint:main" (jshint) task Warning: Path must be a string. Received null Use --force to continue.

Aborted due to warnings.

Grunt file

module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),

    uglify: {

      options: {
        mangle: false
      },

      target: {
        files: {
          'script/dist/main.min.js': 'script/dist/main.js'
        }
      },

      build: {
        files: {
          'script/dist/build.min.js': 'script/dist/build.min.js'
        }
      }

    },

    concat: {
      options: {
        stripBanners: true,
        banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
          '<%= grunt.template.today("yyyy-mm-dd") %> */',
      },

      srcJS: {
        src: ['script/src/menu.js',
          'script/src/custom_plugins.js',
          'script/src/banner.js',
          'script/src/latestNews.js',
          'script/src/officers.js',
          'script/src/eventsCalendar.js',
          'script/src/combinedSocialMedia.js',
          'script/src/haveYourSay.js',
          'script/src/photoGallery.js',
          'script/src/countdown.js'
        ],
        dest: 'script/dist/main.js'
      },

      css: {
        src: ['style/libs/bootstrap.min.css',
          'style/libs/bootstrap-theme.min.css',
          'style/src/css/*'
        ],
        dest: 'style/dist/build.min.css'
      },

      build: {
        src: ['script/libs/jquery.easing.min.js',
          'script/dist/main.js',
          'script/libs/bootstrap.min.js',
          'script/libs/velocity.min.js',
          'script/libs/date.js',
          'script/libs/jquery.timeago.js',
          'script/libs/owl.carousel.min.js'
        ],
        dest: 'script/dist/build.min.js'
      }

    },

    jshint: {

      main: 'script/dist/main.js'

    },

    watch: {

      js: {
        files: 'script/src/*',
        tasks: ['concat:srcJS', 'uglify:target', 'jshint:main', 'copy:js']
      },

      css: {
        files: 'style/src/css/*',
        tasks: ['copy:css']
      },

      less: {
        files: 'style/src/less/*',
        tasks: ['less', 'copy:css']
      },

      html: {
        files: '*.html',
        tasks: ['validation', 'bootlint']
      }

    },

    clean: {
      js: [
        'script/dist/main.min.js',
        'dist/build.min.js',
        'dist/build.min.css'
      ]
    },

    copy: {
      css: {
        files: [

          {
            expand: true,
            'src': 'style/src/css/main.css',
            'dest': 'style/dist/',
            flatten: true,
            rename: function(dest, src) {
              return dest + src.replace('main', 'build.min');
            }
          },

          {
            expand: true,
            'src': 'style/dist/build.min.css',
            'dest': 'dist/',
            flatten: true
          },

        ]
      },

      js: {
        files: [{
          expand: true,
          'src': 'script/dist/build.min.js',
          'dest': 'dist/',
          flatten: true
        }]
      }
    },

    validation: {
      options: {
        reset: grunt.option('reset') || false,
        stoponerror: true,
        relaxerror: ['Bad value X-UA-Compatible for attribute http-equiv on element meta.'] //ignores these errors
      },
      files: {
        src: ['homepage.html']
      }
    },

    bootlint: {
      options: {
        stoponerror: false,
        relaxerror: ['E001', 'E003', 'E031', 'W001', 'W002', 'W003', 'W005', 'W007', 'W009', 'E013']
      },
      files: ['homepage.html'],
    },

    less: {
      build: {
        options: {
          paths: ["style/src/less"],
          cleancss: true,
          compress: true
        },
        files: {
          "style/src/css/main.css": "style/src/less/main.less"
        }
      }
    }

  });

  // Load the plugin that provides the "uglify" task.
  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-jshint');
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-contrib-copy');
  grunt.loadNpmTasks('grunt-contrib-clean');
  grunt.loadNpmTasks('grunt-contrib-less');
  grunt.loadNpmTasks('grunt-html-validation');
  grunt.loadNpmTasks('grunt-bootlint');

  // Default task(s).
  //grunt.registerTask('default', ['concat:srcJS','concat:css','uglify','jshint:main']);
  grunt.registerTask('default', [
    'validation',
    'bootlint',
    'concat:srcJS',
    'jshint:main',
    'uglify:target',
    'clean',
    'concat:build',
    'uglify:build',
    'less',
    'copy'
  ]);
};
8
  • 1
    Can you post you gruntFile ? Commented Jun 14, 2016 at 9:37
  • have done, see above Commented Jun 14, 2016 at 9:39
  • I think that your path is wrong. On the jsHint you should point on your main and not the dist/main.js one ! try to switch your path to your main! Commented Jun 14, 2016 at 9:44
  • sorry, what do you mean by main? Commented Jun 14, 2016 at 9:47
  • your path scripts/dist/main.js Commented Jun 14, 2016 at 9:48

4 Answers 4

16

The reporterOutput must be a string. When omitted it is taken as a null.

Provide an empty string for it in your Gruntfile.js

jshint: {
    main: 'script/dist/main.js',
    reporterOutput: '' // <-- Add an empty String here
}
Sign up to request clarification or add additional context in comments.

Comments

5

If you are using any generators give like this

jshint: {
      main: {
        options: {
            jshintrc: '.jshintrc',
            reporterOutput: "" // Empty string inside options
        },
        src: createFolderGlobs('*.js')
      }
    }

1 Comment

What createFolderGlobs do?
3

For me, it was adding reporterOutput with an empty string value in the Gruntfile.js within the config object like:

{
  jshint: {
     options: {
        jshintrc: ".jshintrc",
        reporterOutput: ''
     }
  }
}

that fixed it.

Comments

2

This error is related to the version of jshint library. To solve, change current jshint version for the latest

$ npm install grunt-contrib-jshint@latest --save-dev

Anyhow, change the jshint version in your package.json file manually to 1.1.0. Do not forget to update the project with statement below:

npm install

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.