Hapi - 用HTML回复

时间:2015-09-08 22:38:15

标签: javascript node.js hapijs

我是Hapi和Javascript的新手,我正试图在浏览器中显示一个页面。我有一个main.html文件,我希望在进入第一页时显示为soons,但是像我这样的代码总是会出错

"{"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);
});

3 个答案:

答案 0 :(得分:2)

您是否设置了服务器的视图配置?在docs他们说你需要一个视图引擎(如把手/ swig)。

如果没有,也许您可​​以尝试使用绝对路径

提供文件
var path = require('path');

server.route({
    method: 'GET',
    path: '/',
    handler: function (request, reply) {
        reply.file(path.join(__dirname, '../../../path/to/main.html'));
    }
});

答案 1 :(得分:0)

如果您使用的是hapi 9.x.x,则需要加载视觉插件才能使用reply.view方法。请参阅此处的文档 https://github.com/hapijs/vision

答案 2 :(得分:0)

hapi string serialcom = "$67%!$127a%"; var serialcomnum = Regex.Replace(serialcom, @"[^0-9]+", ","); serialcomnum = serialcomnum.TrimStart(',').TrimEnd(','); int[] serialints = serialcomnum.Split(',').Select(int.Parse).ToArray(); 后来需要vision才能获得模板渲染支持。有了愿景,您正在使用9.0.0方法对reply界面进行装饰,以便您发送HTML回复:

您的设置如下所示:

view

然后您可以像这样回复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 
  })
})

您也可以按照本教程进行操作:

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

希望有所帮助!