2017-07-03 67 views
1

我的代码工作使用块帮手来比较值,但这个问题我每次运行该代码时,我得到在我的网页视图比较的车把块帮手

Error: Missing helper: "compare" 
    at Object.<anonymous> (/opt/lampp/htdocs/x/chessMult/regtest/using-passport-with-sequelize-and-mysql-master/node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js:19:13) 
    at Object.eval (eval at createFunctionContext (/opt/lampp/htdocs/x/chessMult/regtest/using-passport-with-sequelize-and-mysql-master/node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js:254:23), 
    <anonymous>:8:91) 
    at main (/opt/lampp/htdocs/x/chessMult/regtest/using-passport-with-sequelize-and-mysql-master/node_modules/handlebars/dist/cjs/handlebars/runtime.js:175:32) 
    at ret (/opt/lampp/htdocs/x/chessMult/regtest/using-passport-with-sequelize-and-mysql-master/node_modules/handlebars/dist/cjs/handlebars/runtime.js:178:12) 
    at ret (/opt/lampp/htdocs/x/chessMult/regtest/using-passport-with-sequelize-and-mysql-master/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js:525:21) 
    at ExpressHandlebars._renderTemplate (/opt/lampp/htdocs/x/chessMult/regtest/using-passport-with-sequelize-and-mysql-master/node_modules/express-handlebars/lib/express-handlebars.js:247:12) 
    at ExpressHandlebars.<anonymous> (/opt/lampp/htdocs/x/chessMult/regtest/using-passport-with-sequelize-and-mysql-master/node_modules/express-handlebars/lib/express-handlebars.js:173:21) 

我的索引此错误按摩.hbs文件

{{#compare pageCount ">" 1 }} 
    <ul class="pagination"><­/ul> 
    {{#compare currentPage ">" 1 }} 

     <li><a href="/?page=1"> &laquo;</a></li> 
    {{/compare}} 

{{/compare}} 

我auth.js文件

​​

我app.js文件

const exphbs  = require('express-handlebars'); 
const hbs = exphbs.create({ 
    // Specify helpers which are only registered on this instance. 
    helpers: { 
    foo: function() { return 'FOO!'; }, 
    extname: ".hbs", 
    compare: function(lvalue, rvalue, options) { 

     if (arguments.length < 3) 
     throw new Error("Handlerbars Helper 'compare' needs 2 parameters"); 

     var operator = options.hash.operator || "=="; 

     var operators = { 
     '==':  function(l,r) { return l == r; }, 
     '===':  function(l,r) { return l === r; }, 
     '!=':  function(l,r) { return l != r; }, 
     '<':  function(l,r) { return l < r; }, 
     '>':  function(l,r) { return l > r; }, 
     '<=':  function(l,r) { return l <= r; }, 
     '>=':  function(l,r) { return l >= r; }, 
     'typeof': function(l,r) { return typeof l == r; } 
     } 

     if (!operators[operator]) 
     throw new Error("Handlerbars Helper 'compare' doesn't know the operator "+operator); 

     var result = operators[operator](lvalue,rvalue); 

     if(result) { 
     return options.fn(this); 
     } else { 
     return options.inverse(this); 
     } 

    } 

    } 
}); 


//For Handlebars 
app.set('views', './app/views') 
app.engine('.hbs', exphbs({extname: '.hbs'})); 
app.set('view engine', '.hbs'); 

哪来的错?

回答

1

您在app.js文件中有一个小错误

const exphbs  = require('express-handlebars'); 
const hbs = exphbs.create({ 
//... 
}); 

//For Handlebars 
app.set('views', './app/views'); 
app.engine('.hbs', hbs.engine); // <===== Use `hbs.engine` 
app.set('view engine', '.hbs');