在中间件函数下,connect参数未定义

时间:2015-10-21 08:26:40

标签: node.js gruntjs grunt-contrib-connect

我为grunt-contrib-connect

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

当我执行bash - grunt connect:livereload时,它会提示 -

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

Aborted due to warnings.

(关于connect参数,我查了一下。)

如何正确传递此参数?

1 个答案:

答案 0 :(得分:1)

您似乎在调用connect而不是在此处引用它:

connect().use

应为connect.use

<强>更新

查看文档,中间件函数应该返回一个带有签名(req, res, next)的函数数组,但是当前您正在从use和{{1}传递一组返回值方法可以是任何东西。

他们的示例将函数插入middlewars数组,然后返回它:

static

如果您想坚持使用当前返回数组文字的方法,请确保每个数组项都是具有预期签名的函数:

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

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

          return middlewares;