如何使用 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();
有了 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();