2016-03-22 8 views
5

Non sono esattamente sicuro di cosa stia succedendo, ma mi ha infastidito per un po '. Il mark-down parser marked nodo funziona in questo modo:Passaggio della funzione del modulo a una funzione in un altro file

var marked = require('marked'); 
marked.setOptions({ mathjax : false }); 

che tutte le opere. Ma io sto costruendo un sistema di plugin dove voglio passare il modulo funzione segnata in una funzione da un altro file e impostare le opzioni in quella funzione:

// main.js 
var marked = require('marked'); 
var plugin = require('./plugin'); 
plugin(marked); 
marked("# my markdown\n $$5 + 5$$", function(err, result) { 
    // this result still parses mathjax. Setting the option in the main 
    // file will disable mathjax. 
    console.log(result); 
}); 

// plugin.js 
module.exports = function(marked) { 
    marked.setOptions({ mathjax: false }); 
} 

La funzione marked viene passata correttamente per la mia funzione plug-in, e viene chiamata la funzione setOptions, ma quando in seguito utilizzo lo marked nel mio script principale, le opzioni non sono impostate. Se imposto le opzioni nello script principale, funziona.

Sono un po 'incerto se marked è un Function e la sua implementazione di setOptions() potrebbe essere il colpevole di questo?

Qualche idea?

+0

Come fai a capire che non funziona? –

+2

Cosa succede se si 'console.log (contrassegnato)' in 'plugin.js'? –

+0

Questo dovrebbe funzionare bene, qualcos'altro deve andare avanti? – adeneo

risposta

0

Hai detto di essere passato a kramed, un looking at the definition di setOptions restituisce un'istanza di kramed. Pertanto, l'impostazione delle opzioni in un altro file potrebbe non modificare l'istanza globale di kramed in main.js. Per lo meno cambiando ai seguenti lavori:

// main.js 
var kramed = require('kramed'); 
var plugin = require('./plugin'); 
kramed = plugin(kramed); 
kramed("# my markdown\n $$5 + 5$$", function(err, result) { console.log(result); }); 

//plugin.js 
module.exports = function(kramed) { 
    return kramed.setOptions({ mathjax: false }); 
} 
Problemi correlati