简体   繁体   中英

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

With express.js i can do this

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);

How do i achieve the same thing using Hapi.js?

I have tried some things also with inertjs but I can't seem to find the correct way. Does anyone have experience with it?

Found my way to this implementation, but im getting TypeErrors: TypeError: Cannot read property 'register' of undefined

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');
        }
    });
});

Straight from the doc

In detail, you just have to call reply.file()

This will not work with hapi 17 because of the major change in the request system

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

Fixed by using Hapi@16.xx and Inert@4.xx and using Ernest Jones answer.

For anyone dealing with this problem in the future here is my complete change:

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();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM