2017-05-02 4 views
-1

Ich habe eine js Datei Lenker verwendet:Typeerror: json ist keine Funktion Lenker mit

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 }); 

Erste Fehler in Zeile return json(fs.readFileSync('file.json', {encoding: 'utf8'})); sagen TypeError: json is not a function

Wie würden Sie das Problem lösen? und warum ist es passiert?

+0

Versuchen 'this.' zu entfernen? – Sweeper

+2

Was erwartest du, 'this'? In Ihrem Fall bezieht sich "this" auf meinHelper-Objekt. –

+0

Entfernen .this und es wird funktionieren, nur json() –

Antwort

0

Sie können es wie folgt tun:

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); 

Here, this keyword is referencing towards your myHelpers instead of window object . So you need to bind it using bind method to point it to current window .

+0

Überprüfen Sie dies: http://StackOverflow.com/Questions/43731601/Typeerror-this-Json-is-Not-a-Function#comment74506296_43731601 – dfsq

+0

Anfangs hatte ich 'this' nicht, die Frage wurde aktualisiert. – sreginogemoh

+0

@sreginogemoh, Antwort aktualisiert sogar :) –