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

How to use Hapi.js to serve a static HTML index

有了 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 实现相同的目的?

我也用 inertjs 尝试过一些东西,但我似乎找不到正确的方法。有人有这方面的经验吗?

找到了实现此实现的方法,但我遇到了 TypeErrors: 类型错误:无法读取未定义的 属性 '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');
        }
    });
});

直接来自 doc

详细的,你只需要调用reply.file()

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

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

已通过使用 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();