快乐-回复HTML

Hapi - reply with HTML

本文关键字:HTML -回复 快乐      更新时间:2023-09-26

我是Hapi和Javascript的新手,我试图在浏览器中显示一个页面。我有一个main.html文件,我想在我们进入第一页时立即显示,但是像这样的代码我总是得到错误

"{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred"}"

如何显示html文件?

js文件:

var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({ port: 3000 });

server.route({
    method: 'GET',
    path: '/',
    handler: function (request, reply) {
        reply.view('main.html');
    }
});
server.route({
    method: 'GET',
    path: '/{name}',
    handler: function (request, reply) {
        reply('Hello, ' + encodeURIComponent(request.params.name) + '!');
    }
});
server.start(function () {
    console.log('Server running at:', server.info.uri);
});

您是否为服务器设置了视图配置?在文档中,他们说你需要一个视图引擎(像handlebars/swig)。

如果没有,也许你可以尝试提供一个绝对路径

的文件。
var path = require('path');
server.route({
    method: 'GET',
    path: '/',
    handler: function (request, reply) {
        reply.file(path.join(__dirname, '../../../path/to/main.html'));
    }
});

如果使用的是hapi 9.x。X你需要加载视觉插件才能使用回复。视图的方法。查看这里的文档https://github.com/hapijs/vision

hapi 9.0.0及以后的版本需要支持模板渲染。有了视觉,您正在用view方法装饰reply接口,允许您发送HTML响应:

你的设置看起来像这样:

var Hapi = require('hapi')  
var Vision = require('vision')  
var Handlebars = require('handlebars')
// create new server instance
var server = new Hapi.Server()
// register vision to your server instance
server.register(Vision, function (err) {  
  if (err) {…}
  // configure template support   
  server.views({ // config here 
  })
})

然后你可以这样回复HTML:

server.route({  
  method: 'GET',
  path: '/',
  handler: function (request, reply) {
    var data = { message: 'Hello from Future Studio' }
    reply.view('index', data)
  }
})

你也可以遵循这个教程:

https://futurestud.io/tutorials/hapi-how-to-render-views

希望有帮助!