Джангоподобный шаблонизатор или как починить 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, впрочем это совсем другая история.

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

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

Войти через центр авторизации
Похожие вопросы