#node.js #express #hogan.js
#node.js #экспресс #hogan.js
Вопрос:
Я обновил свое приложение со старых библиотек на самую новую, но столкнулся с несогласованной ошибкой.
Мои библиотеки :
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)
Я безуспешно пытался понизить некоторые библиотеки. Я не могу вспомнить, с какой версии я начинал (вероятно, express <4.0.0). Я полностью запутался в этом…
Спасибо за ваше время.
Комментарии:
1. Если кто-то ищет ответ, я не смог найти способ исправить ошибку, поэтому я заменил движок Hogan на Handlebars. Теперь он работает без сбоев.