Я пытаюсь заставить dustjs-linkedin работать с проектом Express 3, однако я не могу пройти мимо этой ошибки:
Error: Template name parameter cannot be undefined when calling dust.compile
at Object.compiler.compile (/home/user/project/node_modules/dustjs-linkedin/lib/compiler.js:21:16)
at Object.dust.compileFn (/home/user/project/node_modules/dustjs-linkedin/lib/dust.js:109:37)
at Function.exports.dust.render (/home/user/project/node_modules/consolidate/lib/consolidate.js:226:56)
at /home/user/project/node_modules/consolidate/lib/consolidate.js:146:25
at /home/user/project/node_modules/consolidate/lib/consolidate.js:99:5
at fs.js:266:14
at Object.oncomplete (fs.js:107:15)
Я могу воспроизвести это с помощью нового проекта Express 3 следующим образом:
app.js
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var app = express();
// added these 3
var dust = require('dustjs-linkedin');
var cons = require('consolidate');
app.engine('dust', cons.dust);
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
// added this 1
app.set('view engine', 'dust');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
app.get('/', routes.index);
app.get('/users', user.list);
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
package.js
{
"name": "application-name",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "3.4.7",
"dustjs-linkedin": "*",
"consolidate": "*"
}
}
маршруты/index.js
exports.index = function(req, res){
res.render('index', { title: 'Express' });
просмотры/index.dust
Title: {title}
Странно то, что у меня есть проект, использующий экспресс 3 и dustjs-linkedin, который работает нормально. Я проверил файлы в модуле dustjs-linkedin, и рабочая версия имеет много файлов в dist, в то время как проект, выдающий ошибку, имеет только несколько, а именно:
работает/node_modules/dustjs-linkedin/dist:
dust-core.js dust-core.min.js dust-full.js dust-full.min.js LICENSE
рабочий проект/node_modules/dustjs-linkedin/dist:
dust-core-1.1.1.js dust-core-2.0.0.min.js dust-full-1.2.0.js dust-full-2.0.1.js
dust-core-1.2.0.js dust-core-2.0.1.js dust-full-1.2.1.js dust-full-2.0.2.js
dust-core-1.2.1.js dust-core-2.0.2.js dust-full-1.2.2.js dust-full-2.0.3.js
dust-core-1.2.2.js dust-core-2.0.3.js dust-full-1.2.2.min.js dust-full-2.1.0.js
dust-core-1.2.2.min.js dust-core-2.1.0.js dust-full-1.2.3.js dust-full-2.2.0.js
dust-core-1.2.3.js dust-core-2.2.0.js dust-full-1.2.3.min.js dust-full-2.2.2.js
dust-core-1.2.3.min.js dust-core-2.2.2.js dust-full-1.2.4.js dust-full-2.2.2.min.js
dust-core-1.2.4.js dust-core-2.2.2.min.js dust-full-1.2.5.js dust-full-2.2.3.js
dust-core-1.2.5.js dust-core-2.2.3.js dust-full-1.2.6.js dust-full-2.2.3.min.js
dust-core-1.2.6.js dust-core-2.2.3.min.js dust-full-2.0.0.js
dust-core-2.0.0.js dust-full-1.1.1.js dust-full-2.0.0.min.js
Эта демонстрация «рабочего» проекта дает мне ту же ошибку: https://github.com/chovy/express-template-demo