Hapijs上的angular度代码,由视图引擎的nodejs的手柄

虽然在hapi做了api之后。 我决定在hapijs的文件夹结构中创build一个视图文件来呈现html文件。 我已经在hapijs上使用了handlebars引擎和Vision支持库来显示html文件。 一切正常,当我运行正常的HTML代码,但是当我使用angular码,它给出了一些parsing错误。 我认为有可能是视图引擎句柄问题。 请帮忙

当我运行节点服务器并点击视图调用的path时,这是错误的

Error: Parse error on line 144: ... <td> {{(titleData.Success -----------------------^ Expecting 'ID', 'STRING', 'NUMBER', 'BOOLEAN', 'UNDEFINED', 'NULL', 'DATA', got 'OPEN_SEXPR': Parse error on line 144: ... <td> {{(titleData.Success 

// HTML代码在这里

 <div class="table-responsive" ng-controller="titleController"> <h4 align="center">Title Data</h4> <table ng-init="titleData.total = {}" class="table table-condensed" border="1"> <thead> <tr> <th>#</th> <th colspan="2"><center>SeWise</center></th> <th colspan="2"><center>intWise</center></th> <th colspan="2"><center>sons</center></th> </tr> <tr> <th>Stus</th> <th>Cou</th> <th>%</th> <th>Cou</th> <th>%</th> <th>Fible</th> <th>Nlexible</th> </tr> </thead> <tbody ng-repeat="titleData in data"> <tr> <td> Success</td> <td> {{titleData.Success}}</td> <td> {{(titleData.Success/(titleData.Success+titleData.Fail+titleData.Partial)*100).toFixed(2)}}</td> <td>{{titleData.SuccessDp}}</td> <td>{{(titleData.SuccessDp/(titleData.SuccessDp+titleData.FailDp)*100).toFixed(2)}}</td> <td>{{titleData.Fible}}</td> <td>{{titleData.NonFible}}</td> </tr> <tr> <td> Partial</td> <td>{{titleData.Partial}}</td> <td> {{(titleData.Partial/(titleData.Success+titleData.Fail+titleData.Partial)*100).toFixed(2)}}</td> <td colspan="2"> </td> <!-- <td> </td> --> <td colspan="2"> </td> <!-- <td> </td> --> </tr> <tr> <td> Failed</td> <td ng-init="total.titleData.Success = data.total.titleData.Success + titleData.Success+titleData.Fail+titleData.Partial"> {{titleData.Fail}}</td> <td> {{ (titleData.Fail/(titleData.Success+titleData.Fail+titleData.Partial)*100).toFixed(2)}}</td> <td ng-init="total.titleData.SuccessDp = titleData.SuccessDp + titleData.FailDp"> {{titleData.FailDp}}</td> <td> {{(titleData.FailDp/(titleData.SuccessDp+titleData.FailDp)*100).toFixed(2)}}</td> <td colspan="2"> </td> <!-- <td> </td> --> </tr> <tr> <th> Total </th> <th colspan="2"> {{total.titleData.Success}} </th> <th colspan="2"> {{total.titleData.SuccessDp}} </th> <th colspan="2"> </th> </tr> </tbody> </table> 

//使用hapi-swaggerconfiguration文档

 server.register([ Inert, { 'register': HapiSwagger, 'options': swaggerOptions }, ], function (err) { if (err) { throw err; } /** * view configuration */ server.views({ engines: { html: Handlebars }, path: __dirname + '/view', // layout: 'index' }); server.route({ method: 'GET', path: '/yoyo', handler: { view: 'index' } }); 

我已经看到各种博客和github所有人都抱怨模板引擎句柄,所以我切换到ejs的另一个模板引擎和代码工作正常,但有一个问题,它无法呈现js文件,如果他们被包括在外面

这里是代码,你可以看到

 server.views({ engines: { html: require('ejs') }, // compileMode: 'sync', relativeTo: __dirname, path: __dirname + '/view', layoutPath: 'index', }); //Routes for apis server.route({ method: 'GET', path: '/view', handler: { view: 'index' } }); 

以上答案不足以满足我们的要求。 所以我分享了我们可以在HTML中使用外部js文件的解决scheme。

 var Path =require('path'); server.views({ engines: { html: require('ejs') }, // compileMode: 'sync', relativeTo: __dirname, path: __dirname + '/view', layoutPath: 'index', }); //Routes for apis server.route({ method: 'GET', path: '/{param*}', handler: { directory: { path: Path.join(__dirname, 'public'), listing: true } } }); server.route({ method: 'GET', path: '/view', handler: { view: 'index' } }); 

示例目录结构我按照如下所示:

视图

–index.html

上市

–helpers

— controller.js

server.js