【问题标题】:How to use Hapi.js to serve a static HTML index如何使用 Hapi.js 提供静态 HTML 索引
【发布时间】:2018-01-13 12:01:47
【问题描述】:

使用 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: TypeError:无法读取未定义的属性“注册”

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

【问题讨论】:

    标签: javascript html express hapijs


    【解决方案1】:

    直接来自doc

    具体来说,你只需要调用reply.file()

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

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

    【讨论】:

    • 我还以为是server.routes,会试试的。
    • 它是我索引的绝对路径吗? c:/users/username/webstormprojects/projectname/index.html ??
    • 我会告诉你的项目根目录,那里有你的 package.json 但是,我不确定,你应该同时尝试...并验证我的答案 ^^
    • 按照上述方式进行操作会给我带来未处理的承诺拒绝和弃用警告
    • 很确定您使用的是 hapi 17
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 2015-06-05
      • 2020-04-04
      • 2015-08-20
      • 2017-07-12
      相关资源
      最近更新 更多