【问题标题】:gulp-webserver serving static files with middlewaregulp-webserver 使用中间件提供静态文件
【发布时间】:2016-02-03 18:37:37
【问题描述】:

我正在尝试使用 gulp 和 gulp-webserver 为量角器测试提供一些静态内容。 对于所有以 '/mocks' 开头的路由,我想从基本路径 test/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();
    }
  }
}

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

【问题讨论】:

    标签: gulp middleware e2e-testing


    【解决方案1】:

    所以看起来原始路由包含在上述代码下会导致test/mocks/mocks的路径中。

    虽然仍然需要添加 getStatic 方法(gulp-webserver 不会转发要连接的对象 - 如果对象包含键 'route' 和 'handle' 这将是一个选项),但问题是当我将其更改为

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      • 2011-01-27
      • 2015-03-04
      • 2012-08-20
      • 2019-01-09
      • 1970-01-01
      相关资源
      最近更新 更多