web-dev-qa-db-fra.com

Attention: connect.static n'est pas une fonction Utilisez --force pour continuer

J'utilise le projet YO lessapp, "grunt-contrib-connect" m'aide à démarrer un serveur de noeud js sur le port 9000. Chaque fois que j'exécute grunt serve (démarre le serveur), le service est interrompu en raison de l'avertissement ci-dessous.

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

L'erreur exacte s'est produite dans la fonction ci-dessous dans Gruntfile.js

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

J'ai installé npm install grunt-contrib-connect --save-dev, npm install serve-static --save-dev

Je suis tombé sur quelques articles, certains suggèrent de désactiver le pare-feu mais pas de chance.

Je sais qu'il y a quelque chose à voir avec ma machine ou les conflits de version de npm/node/connect, car j'ai essayé d'exécuter la même application à partir d'une autre machine et cela fonctionne très bien.

Configuration du système :

J'ai installé connect et serve-static en fonction de la publication nodejs connect ne peut pas trouver statique , mais toujours le même

De l'aide? Merci d'avance

26
kishorekumaru

Vous devez installer connect et serve-static:

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

Et puis vous devez importer serve-static dans 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)
            ];
          }
        }
      }
63
mixel

À partir de la version 0.11.x, le nouveau grunt-contrib-connect Ne prend pas en charge connect.static Et connect.directory.
Vous devez installer serve-static (Pour les fichiers statiques) et serve-index (Pour les pages Sert qui contiennent des listes de répertoires pour un chemin donné).

comme ça:
var serveStatic = require('serve-static');
var serveIndex = require('serve-index');

Utilisez serveStatic à la place connect.static
et
serveIndex à la place connect.directory

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