Search code examples
gruntjsnpmgrunt-contrib-connect

Warning: connect.static is not a function Use --force to continue


I am using YO lessapp project, "grunt-contrib-connect" helps me to start a node js server on 9000 port. Whenever I run grunt serve (start the server) the service is aborted due to the below warning.

Running "connect:livereload" (connect) task
Warning: connect.static is not a function Use --force to continue.

The exact error took place in the below function in Gruntfile.js

 livereload: {
        options: {
          middleware: function(connect) {
            return [
              connect.static('.tmp'),
              connect().use('/bower_components', connect.static('./bower_components')),
              connect.static(config.app)
            ];
          }
        }
      }, 

I have installed npm install grunt-contrib-connect --save-dev, npm install serve-static --save-dev

I came across few post, some suggest to turn off the firewall but no luck.

I know there is something to do with my machine or npm/node/connect version conflicts, because I tried to run the same app from other machine and it works fine.

System configuration :

I have installed connect and serve-static based upon the post nodejs connect cannot find static, but still the same

Any help? Thanks in Advance


Solution

  • You have to install connect and serve-static:

    npm install --save-dev grunt-contrib-connect serve-static 
    

    And then you have to import serve-static in Gruntfile.js:

    module.exports = function (grunt) {
      ...
      var serveStatic = require('serve-static');
    
      grunt.initConfig({
      ...
        connect: {
        ...
          livereload: {
            options: {
              middleware: function(connect) {
                return [
                  serveStatic('.tmp'),
                  connect().use('/bower_components', serveStatic('./bower_components')),
                  serveStatic(config.app)
                ];
              }
            }
          }