Джангоподобный шаблонизатор или как починить swig?

Добрый день.

Обновление node.js с 0.7.9 до 0.8.6 не прошло бесследно — помимо парочки deprecated-функций со стороны express'а появилась ошибка при конфигурировании джангоподобного шаблонизатора swig:

TypeError: Object function app(req, res){ app.handle(req, res); } has no method 'register'

app.register('.html', swig);<br>
app.set('views', VIEWS_PATH);<br>
app.set('view engine', 'html');<br>




Буду рад узнать решение проблемы со swig'ом, либо услышать названия аналогичных проверенных шаблонизаторов. Спасибо.
  • Вопрос задан
  • 2970 просмотров
Решения вопроса 1
Keenest
@Keenest Автор вопроса
Так. Источник проблем — обновлённый с 2.5.0 на 3.0.0 express.js.
Руководство по миграции вот — github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x, однако не всё так просто: функцию register, с которой возникли проблемы, заменили на engine, которая работает несколько иначе.

Вот что дали долгие поиски и копание в коде:
сам автор swig'а решил перейти с express.js на consolidate.js. Однако заставить работать swig под третьим экспрессом всё же можно, дописав в swig/index.js:
exports.__express = function (path, options, fn) {
	options = options || {};
	try {
		options.filename = path;
		var tmpl = exports.compileFile(_.last(path.split('/')));
		fn(null, tmpl.render(options));
	} catch (err) {
		fn(err);
	}
};


и в самом вашем проекте заменив первую строку на вторую:
    app.register('.html', swig);         // для express v.2
    app.engine('.html', swig.__express); // для express v.3


Изменения в экспрессе затронули и другие модули, использующиеся в моём проекте, в частности socket.io, впрочем это совсем другая история.

Надеюсь результаты моих поисков помогут другим.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы