为什么我在Mustache中获取模板文件名而不是模板内容

我经历了胡须教程

这个问题与embedded胡须模板到另一个模板有一点相关

除了偏分之外,我还有其他所有的工作

我试图做

base.mustache: {{testVar}} <h2>Names</h2> {{#names}} {{> user}} {{/names}} user.mustache: <strong>{{name}}</strong> 

但不是呈现用户模板或它的内容,即名称的价值,它呈现Names c:\blahFolder\user.mustache

我使用hogan-template-compiler来预编译我的模板。

你能弄清楚为什么从上面的信息发生,或者你需要更多的信息? 我假设,我的编译器代码是好的,因为我得到正确呈现testVar值。

如果你真的需要看,这是我的hoganCompiler.js

 var partialsDir = __dirname + '/views/partials' , jsDir = __dirname + '/public/js/compiled'; var hogan = require('hogan.js') , path = require('path') , join = path.join , fs = require('fs') , onModify , relations = {} , watch; onModify = function (filename) { console.log('Changed', filename); if (relations[filename]) { filename = relations[filename]; } console.log('Which relate on', filename); var path, contents; path = join(partialsDir, filename); try { if (!filename.match(/\.mustache/) || !fs.statSync(path).isFile()) { return; } } catch( err ) { console.log( "Failed to stat file " + path + " - skipping"); return; } contents = fs.readFileSync(path).toString(); var templateName = filename.replace(/.mustache$/, ''); // TODO: catch compiler exception.. var compiledTemplate = templateName + " = new Hogan.Template(" + hogan.compile(contents, {asString: true}) + ");"; var jsFilename = filename.replace(/mustache$/, 'js'); fs.writeFileSync(join(jsDir, jsFilename), compiledTemplate ); } watch = function (filename) { if (relations[filename]) { return; } var path; if (filename.charAt(0) == '/') { path = filename; } else { path = join(partialsDir, filename); } // fs.watch(path, function (event, f) fs.watchFile(path, function (event, f) { console.log('event is: ' + event); if( !f ) // fs.watch doesn't work on all platforms.. { // fall back to just reprocessing all in dir fs.readdirSync(path).forEach(onModify); } else { onModify(f); } }); } fs.readdirSync(partialsDir).forEach(onModify); watch(partialsDir); function getPartials(partials, dir) { var baseDir = __dirname + '/views/'; var files = fs.readdirSync(dir); for (var i in files) { if (files[i].match(/\.mustache/) && fs.statSync(join(dir, files[i])).isFile()) { partials[files[i].replace(/.mustache$/, '')] = join(dir, files[i]).replace(baseDir, ''); } } return partials; } var partials = {}; partials = getPartials(partials, partialsDir); exports.partials = getPartials(partials, join(partialsDir, '..'));