2016-03-22 18 views
5

Burada neler olup bittiğine tam olarak emin değilim, ama bir süredir beni rahatsız ediyor. marked düğüm markdown ayrıştırıcı bu gibi çalışır: Bütün işler ThatBaşka bir dosyada bir işlev için işlev geçirme

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

. Ama başka bir dosyadan bir fonksiyonu haline işaretli modül fonksiyonunu geçmek ve bu işlevinde seçeneklerini ayarlamak istediğiniz bir eklenti sistemi inşa ediyorum:

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

marked işlev benim eklenti işlevine doğru geçirilir ve setOptions işlevi çağrılır, ancak ana komut dosyasına sonra marked kullandığımda, seçenekler ayarlanmaz. Ana senaryodaki seçenekleri ayarlarsam çalışır.

marked'un Function olup olmadığını ve bunun setOptions() uygulanmasının bunun suçu olup olmadığı konusunda biraz emin değilim?

Herhangi bir düşünce?

+0

Bunun çalışmadığını nasıl anlıyorsunuz? –

+2

'plugin.js' içinde' console.log (işaretli) 'ise ne olur? –

+0

Bu işe yarayacak, başka bir şey olmalı? – adeneo

cevap

0

kramed örneğini döndürdüğünüzde, looking at the definitionsetOptions kramed'e geçtiniz. Bu nedenle, başka bir dosyadaki seçenekleri ayarlamakgenel örneğini main.js içinde değiştirmeyebilir. En azından aşağıdaki çalışmalara geçilir:

// 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 }); 
} 
İlgili konular