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

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

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

Aborted due to warnings.

(这是关于connect论点的,我检查过)。

如何正确传递这个论点?

4

1 回答 1

1

看起来您正在调用 connect 而不是在此处引用它:

connect().use

应该connect.use

更新

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

他们的示例将函数插入到 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')); },
...]
于 2015-10-21T08:29:44.690 回答