TypeError:json不是使用把手的函数

时间:2017-05-02 06:38:54

标签: javascript node.js handlebars.js

手把使用了js文件:

    var fs = require('fs');

    function json(context) {
      return JSON.stringify(JSON.parse(context), null, 2);
    }


    var myHelpers = {
      json_data: function() {
        return json(fs.readFileSync('file.json', {encoding: 'utf8'}));
      }
    };

let template = fs.readFileSync('tpl.hbs', { encoding: 'utf8' });
let result = dummyjson.parse(template, { helpers: helpers });

在行return json(fs.readFileSync('file.json', {encoding: 'utf8'}));中说出TypeError: json is not a function

的错误

你会如何解决这个问题?为什么会发生?

2 个答案:

答案 0 :(得分:0)

你可以这样做:

  var fs = require('fs');

  function json(context) {
    return JSON.stringify(JSON.parse(context), null, 2);
  }

  var myHelpers = {
    json_data: function() {
      return this.json(fs.readFileSync('file.json', {encoding: 'utf8'}));
    }
  };

  myHelpers.json_data.bind(this,window);
  

此处,this关键字引用了您的myHelpers而不是window object。因此,您需要bind使用bind方法将其指向当前window

答案 1 :(得分:0)

如果您所说的所有行都在一个文件中,那么您的代码就可以了。