2015-10-06 7 views
19

Ich benutze YO lessapp Projekt, "grunt-contrib-connect" hilft mir, einen Knoten js Server auf 9000 Port zu starten. Immer wenn ich grunt serve starte (starte den Server), wird der Dienst aufgrund der folgenden Warnung abgebrochen.Warnung: connect.static ist keine Funktion Verwenden Sie --force, um fortzufahren

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

Der genaue Fehler stattfand, in der unter Funktion 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 installiert haben npm install grunt-contrib-connect --save-dev, npm install serve-static --save-dev

ich auf wenige Post kam, schlagen einige auszuschalten die Firewall aber kein Glück.

Ich weiß, dass es etwas mit meiner Maschine oder npm/node/connect Versionskonflikte zu tun, weil ich versucht habe, die gleiche App von anderen Maschinen laufen und es funktioniert gut.

Systemkonfiguration:

I connect installiert haben und serve-static basierend auf dem Post nodejs connect cannot find static, aber immer noch das gleiche

Irgendwelche Hilfe? Vielen Dank im Voraus

+0

Vielen Dank für Ihre Lösung, Es funktioniert nach innen Grunzen dienen statisch erfordern. – kishorekumaru

Antwort

53

Sie haben connect und serve-static zu installieren:

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

Und dann haben Sie serve-static in Gruntfile.js importieren:

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

Ab Version 0.11.x, die neue grunt-contrib-connect nicht Unterstützung connect.static und connect.directory.
Sie sollten serve-static (für statische Dateien) und serve-index installieren (für Seiten, die Verzeichnislisten für einen bestimmten Pfad enthalten).

wie folgt aus:
var serveStatic = require('serve-static');
var serveIndex = require('serve-index');

Verwenden serveStatic statt connect.static
und
serveIndex statt 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

Nach dieser Antwort ist es 'require ('serve-static') (. Tmp)' das hat für mich funktioniert – singsuyash

Verwandte Themen