代码之家  ›  专栏  ›  技术社区  ›  Polak

hapijs-从具有可变路径名的目录处理程序中提供静态文件

  •  0
  • Polak  · 技术社区  · 9 年前

    inert plugin

    {
      method: 'GET',
      path: '/l/{path*}',
      handler: {
        directory: {
          path: (req) => {
            const defaultDir = '/public';
            return getHostInfo(req.headers.host).then((d) => {
              if (!d || !d.directory) return defaultDir;
              return d.directory;
            }).catch((e) => {
              return defaultDir;
            });
          }
        }
      }
    },
    

    path 参数需要返回字符串或数组的字符串、数组或函数。。。在我的例子中,我的函数返回一个承诺。。。所以它不起作用。 我试着添加 hapi-as-promised reply 支持的功能 then

    基本上,我希望根据主机头的值从一个目录或另一个目录中提供静态资产。

    1 回复  |  直到 9 年前
        1
  •  0
  •   Alexander Petrov    9 年前

    server.ext({
        type: `onPreHandler`,
        method: (request, reply) => {
            const defaultDir = '/public';
            return getHostInfo(request.headers.host).then((d) => {
                if (!d || !d.directory) {
                    request.app.dirPath = defaultDir;
                    return;
                }
                request.app.dirPath = d.directory;
            }).catch((e) => {
                request.app.dirPath = defaultDir;
            }).then(() => {
                return reply.continue();
            });
        }
    });
    

    然后是路线:

    {
        method: `get`,
        path: `/l/{path*}`,
        handler: {
            directory: {
                path: (request) => {
                    return request.app.dirPath;
                }
            }
        }
    }
    

    推荐文章