2016-09-13 51 views
0

我是node.js的初学者我为我的web应用程序使用hapi框架。在那我使用模板的把手。当我配置服务器视图时,我得到了类型错误。TypeError:server.views不是hapi.js中的函数

TypeError: server.views is not a function 
at server.register (/home/developer/Workspace/kravein-test/app/backend/server.js:22:9) 
at process.nextTick (/home/developer/Workspace/kravein-test/node_modules/hoek/lib/index.js:854:22) 
at _combinedTickCallback (internal/process/next_tick.js:67:7) 
at process._tickCallback (internal/process/next_tick.js:98:9) 
at Module.runMain (module.js:577:11) 
at run (bootstrap_node.js:352:7) 
at startup (bootstrap_node.js:144:9) 
at bootstrap_node.js:467:3 

我使用高致病性禽流感15.0.3:

'use strict'; 

    const hapi = require('hapi'); 
    const server = new hapi.Server(); 
    const inert = new require('inert'); 

    server.connection({ 
     host: '127.0.0.1', 
     port: 8080, 
    }); 

    //Starting server 
    server.start((error) => { 
     if(error){ 
      throw error; 
     } 
     console.log("Server running" + server); 
    }); 

    server.register(inert,() => { 
     console.log("hhh"); 
     server.views({ 
      engines: { 
       html: require('handlebars') 
      }, 
      path: 'views', 
      layoutPath: 'views/layout', 
      layout: 'default', 
      partialsPath: 'views/partials' 
      //helpersPath: 'views/helpers', 
     }); 
    }); 

我得到这个错误。由于

回答

2

为利用server.views,你将需要Vision plugin

例如带把手

const server = new Hapi.Server(); 
server.connection({ port: 8000 }); 

const handler = function (request, reply) { 

    reply.view('basic/index', { 
     title: 'examples/views/handlebars/basic.js | Hapi ' + request.server.version, 
     message: 'Hello World!' 
    }); 
}; 

server.register(require('vision'), (err) => { 

    if (err) { 
     throw err; 
    } 

    server.views({ 
     engines: { html: require('handlebars') }, 
     path: __dirname + '/templates' 
    }); 

    server.route({ method: 'GET', path: '/', handler: handler }); 
}); 
+0

感谢Huw Davies。有用。我在这里看到了https://futurestud.io/tutorials/how-to-create-a-dynamic-handlebars-layout-template-in-hapijs上的教程。但在这个他们从未使用视觉插件。还有一些其他教程,我也检查他们从来没有使用它。它基于hapi版本? – Sivabalan

+0

我不太明白'基于hapi版本'的意思吗? @Sivabalan –

+0

要在hapi 15.0.3中使用server.views(),是否应该包含视觉? – Sivabalan