2015-10-21 4 views
0

Я имею connect конфигурацию - grunt-contrib-connectподключения аргумент не определен под функцией промежуточного

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

Когда я исполняю на баш - grunt connect:livereload, он предлагает -

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

Aborted due to warnings. 

(это в отношении к connect аргумента, Я проверил это) .

Как правильно передать этот аргумент?

ответ

1

Похоже, вы вызываете подключения, а не ссылаться на него здесь:

connect().use

Должно быть connect.use

Update

Глядя на документации, функция промежуточного слоя должна возвращать массив функций с сигнатурой (req, res, next), но в настоящее время вы передаете массив возвращаемого значения s от методов use и static, которые могут быть любыми.

Их пример вставляет функции в массив middlewars, а затем вернуть его:

middlewares.unshift(function(req, res, next) { 
      if (req.url !== '/hello/world') return next(); 

      res.end('Hello, world from port #' + options.port + '!'); 
      }); 

      return middlewares; 

Если вы хотите придерживаться текущего подхода возвращения литерала массива, убедитесь, что каждый элемент массива является функцией с подписью ожидаемый:

[..., 
function (req, res, next) { connect.static('.tmp'); }, 
function (req, res, next) { connect.use('/bower_components', connect.static('./bower_components')); }, 
...] 
+0

нет, он дает ту же ошибку для любого 'connect' реферала – URL87

+0

Я думаю, что вижу проблему. Изменит мой ответ. –

+0

Я добавил новый ответ @ URL87 –