如何使用Hapi.js来提供静态HTML索引

时间:2018-01-13 12:01:47

标签: javascript html express hapijs

使用express.js我可以做到这一点

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var port = 9200;

var path = require('path');

var options = {
    index: "html/index.html"
};



app.use('/', express.static('res', options));
server.listen(port);
console.log("Listening on port " + port);

如何使用Hapi.js实现相同的目标?

我也尝试过一些与惰性相关的东西,但我似乎无法找到正确的方法。有没有人有这方面的经验?

找到了我的实现方法,但是我得到了TypeErrors: TypeError:无法读取未定义的属性“register”

server.register(require('inert'), (err) => {

    if (err) {
        throw err;
    }

    server.route({
        method: 'GET',
        path: '/index',
        handler: function (request, reply) {
            reply.file('C:/blabla/html/index.html');
        }
    });
});

2 个答案:

答案 0 :(得分:2)

直接从doc

详细说明,您只需调用reply.file()

即可

由于请求系统发生了重大变化,这不适用于hapi 17

server.route({
        method: 'GET',
        path: '/picture.jpg',
        handler: function (request, reply) {
            reply.file('/path/to/picture.jpg');
        }
    });

答案 1 :(得分:1)

使用Hapi@16.x.x和Inert@4.x.x修正并使用Ernest Jones回答。

对于今后处理此问题的任何人来说,这是我的完全改变:

const Hapi = require('hapi');
const Inert = require('inert');
const server = new Hapi.Server();

server.connection({port: 9200});


server.register(Inert, (err) => {

    if (err) {
        throw err;
    }

    server.route({
        method: 'GET',
        path: '/index',
        handler: function (request, reply) {
            reply.file('/res/html/index.html');
        }
    });
    server.route({
        path: "/res/{path*}",
        method: "GET",
        handler: {
            directory: {
                path: "./res",
                listing: false,
                index: false
            }
        }});


});
server.start();