gulp-webserver使用中间件提供静态文件

时间:2016-02-03 18:37:37

标签: gulp middleware e2e-testing

我正在尝试使用gulp与gulp-webserver一起为量角器测试提供一些静态内容。 对于所有以'/ mocks'开头的路由,我想从基本路径测试/模拟服务(这是构建服务器的设置方式 - 我无法改变它。)

经过多次试验和错误后,我得到了一个如下所示的配置:

gulp.task('serve-e2e', ['build-dev'], function() {
  gulp.src('app').pipe(webserver({
    port: 9001,
    middleware: [
      {route: '/mocks', handle: serveStatic('test/mocks')}
    ]
  }));
});

然而,对于以/ mocks开头的所有内容,仍然会给我404错误(我已经验证了文件夹位置 - 没有任何错误)。

我甚至试过这个 - 看看gulp-webserver中的代码,中间件只接受函数 - 仍无济于事:

gulp.task('serve-e2e', ['build-dev'], function() {
  gulp.src('app').pipe(webserver({
    port: 9001,
    middleware: [
      getStatic({route: /^\/mocks/, handle: serveStatic('test/mocks')})
    ]  
  })
);

function getStatic(opts) {
  return function(req, res, next) {
    if (parseurl(req).pathname.match(opts.route)) {
      return opts.handle(req, res, next);
    } else {
      return next();
    }
  }
}

我确信有更好的方法可以做到这一点,但我很难过。有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

因此,原始路由似乎包含在上述代码下导致test/mocks/mocks的路径中。

虽然仍然需要添加getStatic方法(gulp-webserver不会将对象转发到连接 - 如果对象包含键'route'和'handle',这将是一个选项),当我把它改成

时,问题就解决了
getStatic({route: /^\/mocks/, handle: serveStatic('test')})