Node Express Consolidate Hogan - Несогласованная ошибка при компиляции
Я обновил свое приложение со старых библиотек до новейшего, но столкнулся с противоречивой ошибкой.
Мои любимые:
npm list --depth=0
├── consolidate@0.10.0
├── express@4.4.4
├── hogan.js@3.0.2
├── node-uuid@1.4.1
└── socket.io@1.0.6
Вот пример кода, который я запускаю. Полный код здесь.
var express = require('express');
var http = require('http');
var uuid = require('node-uuid');
var consolidate = require('consolidate');
//////////////////////
// Server setup
//////////////////////
var app = express();
app.engine('html', consolidate.hogan);
app.set('view engine', 'html');
app.set('views', __dirname + '/views');
app.enable('view cache');
app.disable('view layout');
var server = http.createServer(app);
var io = require('socket.io').listen(server);
io.set('log level', 1); // reduce logging
server.listen(9000);
//////////////////////
// Routing
//////////////////////
// Partials used in many rendering views
function hoganPartials() {
return {
head : 'common/head',
mainHeader : 'common/mainHeader',
mainFooter : 'common/mainFooter'
};
};
app.use('/files', express.static(__dirname + '/files'));
app.get('/about', function(req, res) {
res.render('about', {
partials: hoganPartials(),
title : 'Title - About'
});
});
Поэтому, когда я запускаю этот код, у меня иногда возникает случайная ошибка:
- Если страница отображается правильно, она всегда отображается правильно, даже после обновления.
- Если страница не отображается с ошибкой 1, каждый раз, когда я обновляюсь, она не будет отображаться с ошибкой 2.
- Некоторые представления могут отображаться, а другие нет, даже если они имеют одни и те же части.
- Перезапуск приложения приведет к сбросу ошибок, и некоторые виды, которые не будут отображаться при предыдущем запуске, могут работать в текущем и наоборот.
- Отключение кэширования представления не оказывает никакого влияния.
Ошибка 1
SyntaxError: Unexpected token ( at Object.Function (<anonymous>)
at Object.Hogan.makePartials (/home/philaeux/dota2draft/node_modules/hogan.js/lib/compiler.js:301:28)
at Object.Hogan.makeTemplate (/home/philaeux/dota2draft/node_modules/hogan.js/lib/compiler.js:290:25)
at Object.Hogan.generate (/home/philaeux/dota2draft/node_modules/hogan.js/lib/compiler.js:280:17)
at Object.Hogan.compile (/home/philaeux/dota2draft/node_modules/hogan.js/lib/compiler.js:416:21)
at Function.exports.hogan.render (/home/philaeux/dota2draft/node_modules/consolidate/lib/consolidate.js:448:56)
at /home/philaeux/dota2draft/node_modules/consolidate/lib/consolidate.js:144:25
at /home/philaeux/dota2draft/node_modules/consolidate/lib/consolidate.js:97:5
at fs.js:271:14
at Object.oncomplete (fs.js:107:15)
Ошибка 2
SyntaxError: Unexpected token ( at Object.Function (<anonymous>)
at Object.Hogan.makePartials (/home/philaeux/dota2draft/node_modules/hogan.js/lib/compiler.js:301:28)
at Object.Hogan.makeTemplate (/home/philaeux/dota2draft/node_modules/hogan.js/lib/compiler.js:290:25)
at Object.Hogan.generate (/home/philaeux/dota2draft/node_modules/hogan.js/lib/compiler.js:280:17)
at Object.Hogan.compile (/home/philaeux/dota2draft/node_modules/hogan.js/lib/compiler.js:416:21)
at Function.exports.hogan.render (/home/philaeux/dota2draft/node_modules/consolidate/lib/consolidate.js:448:56)
at /home/philaeux/dota2draft/node_modules/consolidate/lib/consolidate.js:144:25
at read (/home/philaeux/dota2draft/node_modules/consolidate/lib/consolidate.js:91:22)
at /home/philaeux/dota2draft/node_modules/consolidate/lib/consolidate.js:142:9
at next (/home/philaeux/dota2draft/node_modules/consolidate/lib/consolidate.js:117:38)
Я пытался понизить некоторые библиотеки безуспешно. Я не могу вспомнить, с какой версии я начинал (вероятно, экспресс < 4.0.0). Я полностью потерян на этом...
Спасибо за ваше время.