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

kishorekumaru picture kishorekumaru · Oct 6, 2015 · Viewed 19k times · Source

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

Answer

mixel picture mixel · Oct 14, 2015

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)
            ];
          }
        }
      }