无法使用把手hapi js和节点js为动态html页面提供静态文件

时间:2017-10-13 08:40:13

标签: javascript node.js handlebars.js hapijs

我正在尝试使用hapi和handlebars模板引擎提供html文件我无法提供html呈现所需的静态文件,如css,images和js,当我使用url动态接受来自用户的动态html的一些参数文件呈现

此代码能够为html所需的静态文件提供正确加载的所有css和图像

const server = new Hapi.Server();

server.connection({
    port: 3000,
    host: 'localhost'
}); 
server.register(require('vision'),(err)=>{
    Hoek.assert(!err, err);
    server.views({
        engines:{
            'html': {
                module: require('handlebars'),
                isCached: false // engine specific
            }
            

        },
        relativeTo:__dirname,
        path:'./templates'
        
    });
});
//inert module for serving files
server.register({  
    register: require('inert')
  }, function(err) {
    if (err) throw err
  
    
  })
  //path for  the resources
  server.route({  
    method: 'GET',
    path: '/{file*}',
    handler: {
      directory: { 
        
        
        path:'./templates'
      }
    }
  })
  //static route for serving html
  server.route({
    method: 'GET',
    path: '/handlebars',
    handler: function (request, reply) {
        
        reply.view('index');
    }
});

但是当我更改静态网址以根据用户参数提供动态html文件时,它只提供html文件但不能提供iamges,js和css

上面的代码保持不变只有改变的是

server.route({
    method: 'GET',
    path: '/handlebars/{timername}',
    handler: function (request, reply) {
        
         hbtimername=encodeURIComponent(request.params.timername);
        
        reply.view(hbtimername);
    }
});

vs代码提供以下错误日志 错误:找不到文件的视图引擎:trans.gif     at internals.Manager._prepare(C:\ Users \ quality_digital_2 \ Schedulerapi \ Schedulerapi \ node_modules \ vision \ lib \ manager.js:318:30)     在Object.internals.prepare(C:\ Users \ quality_digital_2 \ Schedulerapi \ Schedulerapi \ node_modules \ vision \ lib \ manager.js:599:13)     在internals.Response._processPrepare

和chrome dev控制台显示以下日志 GET http://localhost:3000/handlebars/trans.gif 500(内部服务器错误)

我正在做文件路由有什么问题我是新手到我尝试搜索的把手,还试图改变路由但没有运气

0 个答案:

没有答案