2015-10-06 14 views
19

Sto usando il progetto YO lessapp, "grunt-contrib-connect" mi aiuta ad avviare un nodo server js su 9000 porte. Ogni volta che eseguo grunt service (avvia il server) il servizio viene interrotto a causa del seguente avviso.Attenzione: connect.static non è una funzione Usa --force per continuare

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

L'errore esatto ha avuto luogo nella funzione qui sotto in Gruntfile.js

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

Ho installato npm install grunt-contrib-connect --save-dev, npm install serve-static --save-dev

mi sono imbattuto in alcuni inviati, alcuni suggeriscono di disattivare il firewall ma senza fortuna.

So che c'è qualcosa da fare con la mia macchina o conflitti di versione npm/nodo/connessione, perché ho provato a eseguire la stessa app da un'altra macchina e funziona perfettamente.

configurazione del sistema:

Ho installato connect e serve-statico basato sul post nodejs connect cannot find static, ma sempre lo stesso

Qualsiasi aiuto? Grazie in anticipo

+0

Grazie per la vostra soluzione, funziona dopo che richiede servire-statica all'interno grugnito. – kishorekumaru

risposta

53

È necessario installare connect e serve-static:

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

E poi si deve importare 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) 
      ]; 
      } 
     } 
     } 
20

Dalla versione 0.11.x, il nuovo grunt-contrib-connect non lo fa supporto connect.static e connect.directory.
È necessario installare serve-static (per i file statici) e serve-index (per le pagine di servizio che contengono elenchi di directory per un determinato percorso).

come questo:
var serveStatic = require('serve-static');
var serveIndex = require('serve-index');

Usa serveStatic invece connect.static
e
serveIndex invece connect.directory

grunt.initConfig({ 
    connect: { 
     options: { 
      test: { 
       directory: 'somePath', 
       middleware: function(connect, options){ 
        var _staticPath = path.resolve(options.directory); 
        return [serveStatic(_staticPath), serveIndex(_staticPath)] 
       } 
      } 
     } 
    } 
}) 
+0

In seguito a questa risposta, è 'require ('serve-static') (. Tmp)' che ha funzionato per me – singsuyash